效果:
1、原先侧边栏是绝对定位
2、当页面移动到一定位置,侧边栏改为固定定位
3、页面继续滚动,会让返回顶部显示出来
案例分析:1、需要用页面滚动事件scoll 因为页面滚动,所以事件源是document
2、滚动到某个位置,就是判断页面被卷上去的上部值
3、页面被卷上去的头部:可以通过window.pageYOffset 获得 如果被卷去的是左侧 window.pageXOffset
4、注意,元素被卷去的头部是element.scrollTop 如果是页面被卷去是window.pageYOffset
HTML部分
文章图片
CSS部分
文章图片
JS部分
文章图片
1、获取元素 得到ducument然后用window.pageYOffset 如果大于banner卷去的头部就是固定定位
2、获取banner以及定义bannerTop 在利用页面卷进去的头部减去banner元素卷进去的头部(sliderbar.pageYOffset-bannerTop)
3、得到的效果图有300px 的像素差跳转 因为定位CSS时top为300px 所以 应该获得sliderbar.offset-banner.offset 为滚动完之后的距离 (消除了跳转)
文章图片
4、到主体部分,返回顶部显示出来。获得元素main boBack,之后如果window.pageYOffset(页面卷取的距离)>=maintop 就显示字体 否则 不显示 。
移动端scroll不同的是555-561行相同,但是当地点击回到顶部时的click时,会有300ms的延时,原因是移动端屏幕双击会缩放(double tap to zoom)页面。
click延迟问题方案
1、禁止缩放功能。顶端写上
2、如果需要缩放,利用touch事件自己封装事件解决300ms延时。原理是(1)当手指触摸屏幕,记录当前触摸事件
(2)手指离开屏幕,就用离开时间减去触摸时间
(3)如果时间小于150s,并且没有滑动屏幕,我们就定义为点击
【Javascript|Javascript元素滚动scoll系列 (仿淘宝固定右侧侧边栏)和移动端区别】
文章图片
3、使用插件,fastclick插件解决300ms延迟问题
推荐阅读
- 仿淘宝固定侧边栏 2020/11/26
- 前端学习之小案例|前端小案例之仿淘宝固定侧边栏
- javascript|元素可视区 client 系列 / 元素scroll系列 /案例(仿淘宝固定右侧侧边栏)
- javascript|JavaScript网页--仿淘宝右侧边栏
- 学习记录JavaScript|JavaScript(元素偏移,滚动,可视区系列。淘宝右侧固定栏案例,mouseover与mouseenter的区别)
- 从零开始学WEB前端|从零开始学WEB前端——网页的行为——JavaScript基础(1)
- ajax|掌握 Ajax,第 4 部分: 利用 DOM 进行 Web 响应
- 掌握AJAX|掌握 Ajax,第 4 部分: 利用 DOM 进行 Web 响应 将 HTML 转换为对象模型
- JavaScript学习笔记|JavaScript学习笔记——函数 Part1(函数的创建原理(函数声明、函数表达式、函数在何时被创建))