oCodeHoney's BLOG

【JS】仿淘宝固定侧边栏效果的实现

字数统计: 295阅读时长: 1 min
2020/03/10 Share

本案例难度不大,实用性较强。

实现效果

实现效果为页面滚动到某一处时侧边栏定位由绝对定位变为固定定位,再往下滚动一段距离后显示返回顶部。

参考代码

HTML代码

1
2
3
4
5
6
7
8
<div class="slider-bar">
<span class="goBack">
<a href="#header">返回顶部</a>
</span>
</div>
<div class="header w" id="header">头部区域</div>
<div class="banner w">banner区域</div>
<div class="main w">主体部分</div>

CSS代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
.slider-bar {
position: absolute;
left: 50%;
top: 300px;
margin-left: 600px;
width: 45px;
height: 130px;
background-color: pink;
}

.w {
width: 1200px;
margin: 10px auto;
}

.header {
height: 250px;
background-color: skyblue;
}

.banner {
height: 250px;
background-color: purple;
}

.main {
height: 1000px;
background-color: yellowgreen;
}

span {
display: none;
position: absolute;
bottom: 0;
}

JS代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var sliderbar = document.querySelector('.slider-bar');
var banner = document.querySelector('.banner');
var bannerTop = banner.offsetTop;
var sliderbarTop = sliderbar.offsetTop - bannerTop;
var main = document.querySelector('.main');
var mainTop = main.offsetTop;
var goBack = document.querySelector('.goBack');
document.addEventListener('scroll', function() {
if (window.pageYOffset >= bannerTop) {
sliderbar.style.position = 'fixed';
sliderbar.style.top = sliderbarTop + 'px';
} else {
sliderbar.style.position = 'absolute';
sliderbar.style.top = '300px';
}

if (window.pageYOffset >= mainTop) {
goBack.style.display = 'block';
} else {
goBack.style.display = 'none';
}
})

Author:oCodeHoney

Date:2020-3-10


CATALOG
  1. 1. 实现效果
  2. 2. 参考代码
    1. 2.1. HTML代码
    2. 2.2. CSS代码
    3. 2.3. JS代码