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隔行变色与普通JS写法的对比
Apr 21 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
jQuery表格插件datatables用法详解
Nov 23 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
JS碰撞运动实现方法详解
Dec 15 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
浅谈javascript的闭包
Jan 23 Javascript
Vuex简单入门
Apr 19 Javascript
JS滚动到指定位置导航栏固定顶部
Jul 03 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
Node批量爬取头条视频并保存方法
Sep 20 Javascript
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
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python创建数字列表的示例
2019/11/28 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
python sleep和wait对比总结
2021/02/03 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
PHP面试题附答案
2015/11/28 面试题
Java程序员常见面试题
2015/07/16 面试题
服装机修工岗位职责
2013/12/26 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
先进员工获奖感言
2014/08/14 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
信用卡催款律师函
2015/05/27 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
导游词之无锡古运河
2019/11/14 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers