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 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
css样式标签和js语法属性区别
Nov 06 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
Oct 16 Javascript
详解javascript中原始数据类型Null和Undefined
Dec 17 Javascript
浅析JS运动
Dec 28 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 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连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php开发环境配置记录
2011/01/14 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
如何使用angularJs
2017/05/08 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Django 外键的使用方法详解
2019/07/19 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
会计电算化专业毕业生自荐信
2013/12/20 职场文书
国际会议邀请函范文
2014/01/16 职场文书
社会实践感言
2014/01/25 职场文书
旷课检讨书3000字
2014/02/04 职场文书
一年级语文教学反思
2014/02/13 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
警告通知
2015/04/25 职场文书
自信主题班会
2015/08/14 职场文书
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL