想必大家都用过JD,在它的首页里面有个很常见的特性:就是 楼梯特效

对于程序员的我们,可以说是万物皆可盘。那么,我们就来盘一下它。

先上要实现的效果图:

效果功能描述:当点击右侧悬浮的按钮时,点击相应模块,左侧内容区域会自动跳转到该模块区域。

下面,上代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin:0;padding:0;}li{list-style-type: none;}.top{height:900px;background : #ddd;}.footer{height : 600px;background : #ddd;}.content{height:800px;}.content h1{text-align:center;line-height: 80px;}.stairs-list{width : 60px;position: fixed;right:5%;top:50%;margin-top:-120px;background : #fff;}.stairs-list li{width:50px;height:50px;line-height: 25px;text-align : center;padding:5px;border-bottom:1px solid #ddd;}.stairs-list li.active{color : orangered;}.stairs li span{display: block;}</style>
</head>
<body><div class="top"></div><div class="content" style="background-color : yellowgreen "><h1>京东秒杀</h1></div><div class="content" style="background-color : skyblue "><h1>特色优选</h1></div><div class="content" style="background-color : #666 "><h1>频道广场</h1></div><div class="content" style="background-color : orangered "><h1>为您推荐</h1></div><div class="footer"></div><ul class="stairs-list"><li><span>京东</span><span>秒杀</span></li><li><span>特色</span><span>优选</span></li><li><span>频道</span><span>广场</span></li><li><span>为您</span><span>推荐</span></li></ul><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script>// OOA :// 1. 初始化数据;// 2. 事件绑定;// 3. 根据scrollTop值判定所在楼层;// 4. 效果添加;// 5. 根据点击事件切换下标;function Stairs( options ){this.options = options;this.init();}Stairs.prototype = {constructor : Stairs,init : function(){// 内容元素高度数组;this.content_ele_offset_top_list = [];// 获取元素的偏移高度;$(this.options.content_selector).offset( function( index , coords) {// 将每一个元素的高度值放入高度列表之中;this.content_ele_offset_top_list.push(coords.top);return coords;}.bind(this))// 获取最小高度值;var _length  = this.content_ele_offset_top_list.length ; this.min_top = this.content_ele_offset_top_list[0];this.max_top = this.content_ele_offset_top_list[_length - 1] + $(this.options.content_selector).last().height();this.content_ele_offset_top_list.push(this.max_top);this.bindEvent();},bindEvent:function(){var $body_html = $("body,html");// 保存实例对象的指针;// var _this = this;var instance = this;// 高频执行的scroll事件;// 优化 : 节流 ;$(document).scroll( function(){var scrollTop = $body_html.scrollTop();this.calStairsIndex(scrollTop);}.bind(this))$(this.options.stairs_selector).click(function(){// 知道当前发生事件的元素是谁;   this;  因为这jQuery事件绑定处理没有办法,在外部传入当前发生事件的元素; 这个this不能变;// 当前的实例对象是谁;          this;var index = $(this).index(instance.options.stairs_selector);instance.changeScrollTop(index);})},// 计算当前楼层;calStairsIndex : function( st ){// 没有到达楼梯区域进行隔离;if(st < this.min_top || st > this.max_top){ // console.log(-1);this.index = -1;this.changeStairsBtn();return false };// 如果还在范围之内不用继续判断;var _list = this.content_ele_offset_top_list;// 如果 st 还在当前index 范围之内则不继续进行查找;if(st >= _list[this.index] && st < _list[this.index + 1]){return false;}// 遍历 ;for(var i = 0 ; i < _list.length ; i ++){if(st >= _list[i] && st < _list[i + 1]){this.index = i;break;}}this.changeStairsBtn();},changeStairsBtn : function(){if(this.index === -1){$(this.options.stairs_selector).removeClass("active");return false;}$(this.options.stairs_selector).eq(this.index).addClass("active").siblings().removeClass("active");},changeScrollTop : function( index ){$("body,html").scrollTop(this.content_ele_offset_top_list[index]);// 事件触发器;$(document).trigger("scroll");}}var staris = new Stairs({content_selector : ".content",stairs_selector  : ".stairs-list li"});console.log(staris);</script>
</body>
</html>

现在,我们也能实现跟它一样的功能效果了。

感兴趣的小伙伴可以 copy 下来自己动手试一下啦。有什么更好的写法欢迎评论区留言。

JavaScript 案例之 楼梯滚动特效(jQuery实现)相关推荐

  1. html土图片滚动特效,jQuery实现图片左右滚动特效

    本文实例讲述了jQuery合作伙伴左右滚动特效,分享给大家供大家参考,具体如下: 一款基于jQuery合作伙伴左右滚动特效代码,是一款带左右箭头及自动滚动友情链接合作伙伴左右滚动网页特效,鼠标滑过停止 ...

  2. jQuery 间歇式无缝滚动特效分享(三张图片平行滚动)

    2019独角兽企业重金招聘Python工程师标准>>> 最近项目中门户首页需要做出图片间歇式无缝滚动特效,但是在网上找资料都是不太理想,不过可以指导.最后自己写了一个demo实现了这 ...

  3. html数字滚动动画效果,高效的jquery数字滚动特效

    本文实例讲述了基于jquery数字滚动特效的代码,分为四种情况分享给大家供大家参考,具体如下: 有分隔符,有小数点: 只有分隔符: 只有小数点: 无分隔符,无小数点: 运行效果图: 具体代码如下 数字 ...

  4. jQuery教学-简单好用的视差滚动特效Parallax Effect

    若 各位有在注意Firefox OS的朋友,应该会发现到,在台湾的官网中,有一个相当特别的效果,当滚动画面时,感觉画面上叠了一层图层,可在某一个区块中,把背景固定住,然后内容不 断的更换,当这个单元介 ...

  5. html语言字体上下滚动代码,div+css+jquery公告栏垂直(上下)文字单行滚动特效代码(三种样式)...

    网站公告栏一般采用滚动形式,随着jquery的出现,特效做起来更加简单,所以目前大多数网站都有自己的公告栏目,采用文字滚动的形式,今天来分享几个垂直公告文字滚动特效,分别是全面版,常用版,以及极简版! ...

  6. jquery实现数字滚动特效

    一.引入js文件 <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <s ...

  7. html纵向滚动特效,带视觉差效果的垂直全屏整页滚动特效

    这是一款效果非常炫酷的带视觉差效果的垂直全屏整页滚动特效.该特效使用jQuery和CSS3完成,用户可以通过滚动鼠标来一次垂直切换一个页面,在页面切换的时候还带有一些视觉差特效. 使用方法 HTML结 ...

  8. Sequence.js 实现带有视差滚动特效的图片滑块

    Sequence.js 功能齐全,除了能实现之前分享过的现代的图片滑动效果,还可以融合当前非常流行的视差滚动(Parallax Scrolling)效果.让多层背景以不同的速度移动,形成立体的运动效果 ...

  9. div+css静态网页设计——迪斯尼公主滚动特效(7页) HTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作

    HTML5期末大作业:电影网站设计--迪斯尼公主滚动特效(7页) HTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游 ...

最新文章

  1. [论文泛读] QoS论文两篇(Elsevier09, IEEE05)
  2. (chap4 IP协议) CIDR协议
  3. RESTORE DATABASE的standby选项
  4. 配置 mybatis的 log4j.properties
  5. IntelliJ IDEA内部设计
  6. pandas之数值计算与统计
  7. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc
  8. 【mysql】在Linux中通过yum安装MySQL数据库,可以实现远程登录数据库
  9. 使用Ajax以一种形式上传数据和文件吗?
  10. 数学连乘和累加运算符号_2020中考数学 初中数学有理数计算(干货)
  11. sql2005各种版本
  12. 偶遇 649453.sys / Adware.Cdn / Hacktool.Rootkit
  13. [记录]HAproxy负载均衡配置教程
  14. 硕士研究生阶段如何学习slam机器人?
  15. 阿齐索-对接淘宝第三方平台
  16. 元学习笔记——MAML
  17. SQL Server 空间管理——表空间
  18. python xlwt 用法演示
  19. python 开发app应用
  20. FSCapture(截图录屏软件)

热门文章

  1. 优秀网商惊梦酒业谷菊秋的感人事迹
  2. 文字样式的常见属性的如何使用?
  3. 这才是大可乐破产真相 手机圈洗牌下一个谁出局?
  4. Fetch上传文件(不需要设置headers)
  5. 旅游规划 (25 分)
  6. windows server2016搭建IIS网站
  7. 精密光学测量4-光栅曝光
  8. English:英语系动词用法小结
  9. 全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)
  10. 《Linux系统管理》读书笔记