要求
1.原先侧边栏是绝对定位
2.当页面滚动到一定位置,侧边栏改为固定定位
3.页面继续滚动,会让返回顶部显示出来
案例分析
①需要用到页面滚动事件scroll,因为是页面滚动,所以事件源是document
②滚动到某个位置,就是判断页面被卷去的上部值。
③页面被卷去的头部:可以通过window.pageYOffset获得,如果是被卷去的左侧window.pageXOffset
④注意:元素被卷去的头部是element.scrollTop,如果是页面被卷去的头部则是window.pageYOffset
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>仿淘宝固定侧边栏</title><style>.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: 150px;background-color: purple;}.banner {height: 250px;background-color: skyblue;}.main {height: 1000px;background-color: yellowgreen;}span {display: none;position: absolute;bottom: 0;}</style></head><body><div class="slider-bar"><span class="goBack">返回顶部</span></div><div class="header w">头部区域</div><div class="banner w">banner区域</div><div class="main w">主体部分</div><script>//获取元素var sliderBar = document.querySelector('.slider-bar');var banner = document.querySelector('.banner');var main = document.querySelector('.main');var goBack = document.querySelector('.goBack');var bannerTop = banner.offsetTop;var sliderBarTop = sliderBar.offsetTop - bannerTop;var mainTop = main.offsetTop;//页面滚动事件document.addEventListener('scroll',function(){//当页面卷去头部大于等于172时,侧边栏改为固定定位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';}});</script></body></html>
.
