仿淘宝固定侧边栏 2020/11/26

【仿淘宝固定侧边栏 2020/11/26】页面被卷曲头部的位置,可以通过window.pageYOffset获得,如果是被卷曲左侧,window.pageXOffset

> .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; }
="goBack">返回顶部
头部区域
主体部分
> // js不识别短横线 // 页面被卷曲头部的位置,可以通过window.pageYOffset获得,如果是被卷曲左侧,window.pageXOffset //1. 获取元素 var sliderbar = document.querySelector('.slider-bar') var banner = document.querySelector('.banner') // banner.offestTop 就是被卷去头部的大小 一定要写到滚动的外面 var bannerTop = banner.offsetTop; // 当我们侧边栏固定定位之后应该变化的数值 var sliderbarTop = sliderbar.offsetTop - bannerTop; // 获取main 主体元素 var main = document.querySelector('.main') var goBack = document.querySelector('.goBack') var mainTop = main.offsetTop; // 2. 页面滚动事件 scroll document.addEventListener('scroll', function() { // window.pageYOffset 页面被卷去的头部 // 3 .当我们页面被卷去的头部大于等于了 172 此时 侧边栏就要改为固定定位 if (window.pageYOffset >= bannerTop) { sliderbar.style.position = 'fixed'; sliderbar.style.top = sliderbarTop + 'px'; } else { sliderbar.style.position = 'absolute' // sliderbar.style.top = '300px'; sliderbar.style.top = '300px'; } // 4. 当我们页面滚动到main盒子,就显示 goback模块 // if (window.pageYOffset >= mainTop) { if (window.pageYOffset >= mainTop) { // goBack.style.display = 'block'; goBack.style.display = 'block'; } else { goBack.style.display = 'none' }})

    推荐阅读