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 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
Feb 23 Javascript
基于jquery实现漂亮的动态信息提示效果
Aug 02 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 Javascript
基于Layer+jQuery的自定义弹框
May 26 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
Nov 20 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
layui 选择列表,打勾,点击确定返回数据的例子
Sep 02 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
Vue用mixin合并重复代码的实现
Nov 27 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
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
php支付宝APP支付功能
2020/07/29 PHP
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
go语言计算两个时间的时间差方法
2015/03/13 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python多线程实现同步的四种方式
2017/05/02 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
django自带调试服务器的使用详解
2019/08/29 Python
python实现五子棋程序
2020/04/24 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
如何解决安装python3.6.1失败
2020/07/01 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
python爬取微博评论的实例讲解
2021/01/15 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
linux面试题参考答案(4)
2013/01/28 面试题
元旦晚会邀请函
2014/02/01 职场文书
春季防火方案
2014/05/10 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
JS数组去重详情
2021/11/07 Javascript