位置: 编程技术 - 正文

jQuery插件实现无缝滚动特效(jquery插件使用教程)

编辑:rootadmin

推荐整理分享jQuery插件实现无缝滚动特效(jquery插件使用教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery插件怎么用到自己的网站,jquery插件使用,jquery22插件网,jquery插件使用,简单的jquery插件实例,jquery 插件写法,jquery插件使用,jquery插件使用教程,内容如对您有帮助,希望把文章链接给更多的朋友!

首先来看下html骨架,如下:

结构简单明了,没什么说的。

讲下实现原理:

  div box是最外层盒子,给它指定的宽高,记得给box添加一个 overflow:hidden (超出的内容隐藏)样式,因为滚动肯定是会超出box的。

  我们通过js控制 ul 标签的margin 来实现滚动。横向滚动则是控制 margin-left ; 纵向滚动则是控制 margin-top;

  初始状态时,我们还要进行条件判断,判断是否进行滚动。即:当 ul 长度小于 外层 box 长度时不进行滚动,反之则进行滚动。

jQuery插件实现无缝滚动特效(jquery插件使用教程)

  ul 的长度是通过计算得来的,即: ul 里面单个 li 的长度乘以 li 的个数。 ul_width = li_width * li_num;

  之所以能实现无缝滚动,是因为每次滚动的长度刚好大于单个 li 的长度时,我们就将ul的第一个 li 移动到ul的最后,周而复始,无限循环(关于这一点,你可以先不设置 overflow:hidden 来查看)。

插件的实现代码:

基本的代码说明注释写的很清楚了,下面对个别知识点作下讲解:

1) 、var timer=[]; 之前timer并不是声明为数组类型的,是在我写demo的时候,由于页面同时存在两个无缝滚动的应用(为了演示横向和纵向), 出现了bug。

因为他们两个共用了一个timer计时器,当鼠标进入其中一个时,另一个的timer也被clear了。之后修改代码将其声明为数组对象,再通过root.each()就实现了每个插件应用都有自己独立的timer计时器,互不干扰。也就是说此插件支持页面同时存在多个无缝滚动应用。

2) 、outerWidth() /outerHeight()函数。 这个函数比较强大,它获取的不仅仅是元素的宽度/高度,实际上 outerWidth()=width+borderLeft+borderRight+marginLeft+marinRight;当它设置为true后,即:outerWidth(true),它也会将padding计算进来:outerWidth()=width+borderLeft+borderRight+marginLeft+marinRight+paddingLeft+paddingRight;

下面给出DEMO代码:

效果图片:

本文链接地址:https://www.jiuchutong.com/biancheng/373826.html 转载请保留说明!

上一篇:Jquery ajax加载等待执行结束再继续执行下面代码操作

下一篇:基于jquery实现简单的手风琴特效(jquery使用教程)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络