jQuery动画效果实现图片无缝连续滚动


Posted in Javascript onJanuary 12, 2016

本文实例介绍了jQuery动画效果实现图片无缝连续滚动的详细代码,分享给大家供大家参考,具体内容如下

效果图如下:

jQuery动画效果实现图片无缝连续滚动

一、HTML代码

<body> 
  <div id="container"> 
    <ul id="content"> 
      <li><a href="#"><img src="images/0.png"/></a></li> 
      <li><a href="#"><img src="images/1.png"/></a></li> 
      <li><a href="#"><img src="images/tewu.png"/></a></li> 
      <li><a href="#"><img src="images/2.png"/></a></li> 
      <li><a href="#"><img src="images/tewu.png"/></a></li> 
      <li><a href="#"><img src="images/3.png"/></a></li> 
      <li><a href="#"><img src="images/4.png"/></a></li> 
    </ul> 
  </div> 
</body>

1. id为container的div是最外层的包装,用来控制滚动区域显示的具体位置。
2. id为content的ul用来包装那些需要滚动的图片。

3. li元素就是用来包装具体的图片。

二、CSS代码

*{margin: 0; padding: 0;} 
 
img{ 
  border:0; 
} 
 
#container{ 
  width:800px; 
  height: 130px; 
<span style="white-space:pre">  </span>margin:100px auto; 
  border:3px solid blue; 
  overflow: hidden; 
  position: relative; 
} 
 
#container ul{ 
  list-style: none; 
  width:10000px; 
  position: absolute; 
} 
 
#container ul li{ 
  float:left; 
  margin-right: 20px; 
}

这里说明一点,ul 的 width为什么设置为10000px。 因为无缝连续滚动的实现原理,就是在现有显示图片的基础上克隆一份,并且拼接在显示图片的后面,但由于显示图片的总宽度是未知的,所以为了安全性,最好将ul的width宽度设置比较大些。

三、无缝连续滚动原理分析

jQuery动画效果实现图片无缝连续滚动

四、JQuery实现代码

<script type="text/javascript"> 
/* window.onload比 $(function(){}) 加载的更晚一些,这样那些宽度的计算在Chrome中就可以准确计算了*/  
  window.onload = function(){ 
 
    /*计算一个segment的宽度*/ 
 
    var segmentWidth = 0; 
    $("#container #content li").each(function(){ 
      segmentWidth+= $(this).outerWidth(true); 
    }); 
 
    $("#container #content li").clone().appendTo($("#container #content")); 
 
    run(6000); 
 
    function run(interval){ 
      $("#container #content").animate({"left":-segmentWidth}, interval,"linear",function(){ 
        $("#container #content").css("left",0); 
        run(6000); 
      }); 
    } 
 
    $("#container").mouseenter(function(){ 
      $("#container #content").stop(); 
    }).mouseleave(function(){ 
      var passedCourse = -parseInt($("#container #content").css("left")); 
      var time = 6000 * (1 - passedCourse/segmentWidth); 
      run(time); 
    }); 
  }; 
     
</script>

1. 先通过each遍历所有的li元素,计算出它们宽度之和。
2. 拷贝一份图片到现有图片的后面,原理分析图的"图一"所示。

3. 设置6秒钟滚动完界面上面现有的图片,滚动完毕后,通过设置content的left值,将其整体拉回到初始状态,原理分析图的"图二"所示。然后递归调用run方法,完成无限滚动。

4. 当鼠标经过滚动区域的时候,动画立刻停止; 当鼠标离开的时候,动画继续执行。

关于动画继续执行的代码,如下图分析:

jQuery动画效果实现图片无缝连续滚动

以上就是jQuery实现图片无缝连续滚动的代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
json 定义
Jun 10 Javascript
javascript基础知识大集锦(一) 推荐收藏
Jan 13 Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
javascript继承机制实例详解
Nov 20 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
详解vue几种主动刷新的方法总结
Feb 19 Javascript
Node.js API详解之 util模块用法实例分析
May 09 Javascript
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
jqueryMobile使用示例分享
Jan 12 #Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 #Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 #Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 #Javascript
JavaScript继承模式粗探
Jan 12 #Javascript
轻松实现Bootstrap图片轮播
Apr 20 #Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 #Javascript
You might like
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
功能完善的小程序日历组件的实现
2020/03/31 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
大学生个人简历自我评价
2013/11/16 职场文书
安全资金保障制度
2014/01/23 职场文书
年终晚会主持词
2014/03/25 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
改进工作作风心得体会
2016/01/23 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Spring中bean集合注入的方法详解
2022/07/07 Java/Android