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 相关文章推荐
event.X和event.clientX的区别分析
Oct 06 Javascript
javascript对select标签的控制(option选项/select)
Jan 31 Javascript
jquery退出each循环的写法
Feb 26 Javascript
javascript/jquery获取地址栏url参数的方法
Mar 05 Javascript
用html+css+js实现的一个简单的图片切换特效
May 28 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 Javascript
three.js 实现露珠滴落动画效果的示例代码
Mar 01 Javascript
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会话(Session)实现用户登陆功能
2013/06/29 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
django 发送手机验证码的示例代码
2018/04/25 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python requests证书问题解决
2019/09/05 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
python异步Web框架sanic的实现
2020/04/27 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
家长学校工作方案
2014/05/07 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
教师节倡议书2015
2015/04/27 职场文书
付款证明格式范文
2015/06/19 职场文书
行政处罚告知书
2015/07/01 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS