jQuery实现图片走马灯效果的原理分析


Posted in Javascript onJanuary 16, 2016

本文实例分析了jQuery实现图片走马灯效果的原理。分享给大家供大家参考,具体如下:

这里只讲解水平走马灯效果,垂直向上走马灯效果不讲解,原理一样,但是水平走马灯效果有一个小坑。待会讲解

先上代码:

HTML:

<div class="box">  
  <div style="width: 1000px;" id="boxdiv">
   <ul>
    <li style="display: block;" title="清灵少女宛如梦境仙女"><a href="#">
     <img src="images/110927/11-11092G32227.jpg" /></a></li>
    <li title="美女海边性感透视装诱惑"><a href="#">
     <img src="images/130621/1-130621145931-50.jpg" /></a></li>
    <li title="夏小薇:百变小魔女变身性感数码宝贝"><a href="#">
     <img src="images/130620/19-130620115013.jpg" /></a></li>
    <li title="夏小薇化身《杀破狼》粉色妖姬鲜嫩欲滴"><a href="#">
     <img src="images/130315/5-130315135240.jpg" /></a></li>
   </ul>
  </div>
</div>

在<div class="box">中,再包含了一个div,且设置了一个很比较大的宽度,是为了解决一个在垂直走马灯下没有的坑。该坑的效果是在li标签float为left的情况,不要里面的DIV,会出现图片轮播后,显示中的最后一张图片由下向上的跳动效果,这是float的本身特性造成的,因为父元素宽度不够的情况下,后面的元素会自动往下左沉下去,一旦上面宽度够了,就会自动飘上来,这个飘就会造成显示中的最后一张图片的跳动效果,所以采用内部嵌套一个DIV 并设置<div class="box">的overflow CSS样式来解决该问题。

CSS:

.box
{
 width: 800px;
 height: 200px;
 margin-top: 100px;
 margin-left: 100px;
 overflow: hidden;
}
.box img
{
 border-style: none;
 height: 200px;
}
.box ul
{
 margin: 0px;
 padding: 0px;
 list-style-type: none;
}
.box ul li
{
  float: left;
}

脚本:

<script type="text/javascript">
$(document).ready(function () {
 new ZouMa().Start();
});
function ZouMa() {
 this.maxLength = 3; //最低显示数   
 this.Timer = 2000;//计时器间隔时间
 this.Ul = $(".box ul");
 var handId;//计时器id
 var self = this;
 this.Start = function () {
  if (self.Ul.children().length < this.maxLength) {
   self.Ul.append(self.Ul.children().clone());
  }
  handId = setInterval(self.Play, self.Timer);
 }
 this.Play = function () {
  var img = self.Ul.children().eq(0);
  var left = img.children().eq(0).width();
  img.animate({ "marginLeft": (-1 * left) + "px" }, 600, function () {
   //appendTo函数是实现走马灯一直不间断播放的秘诀。
   //目前网上看到的很多走马灯,走到最后一张的时候,会立马闪回第一张,而不是继续从后往前推进,即是没有明白该函数的作用的原因
   $(this).css("margin-left", "auto").appendTo(self.Ul);
  });
 }
}
</script>

此处照例使用了jquery的动画效果函数animate来实现走马灯效果,并配合appendTo函数来实现无尽播放的效果。

有关appendTo函数的作用请参阅jquery的API文档,animate也请参阅API文档

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
js跑步算法的实现代码
Dec 04 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
浅谈javascript中的闭包
May 13 Javascript
javascript验证邮件地址和MX记录的方法
Jun 16 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
JavaScript时间操作之年月日星期级联操作
Jan 15 #Javascript
input点击后placeholder中的提示消息消失
Jan 15 #Javascript
jQuery插件imgPreviewQs实现上传图片预览
Jan 15 #Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 #Javascript
利用CSS3在Angular中实现动画
Jan 15 #Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 #Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 #Javascript
You might like
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
php生成word并下载代码实例
2019/03/15 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
python绘图方法实例入门
2015/05/19 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python Django框架实现自定义表单提交
2016/03/25 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
千手观音观后感
2015/06/03 职场文书
部门主管竞聘书
2015/09/15 职场文书
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers