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 自动增长的文本输入框实现代码
Apr 02 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
js使用for循环查询数组中是否存在某个值
Aug 12 Javascript
js实现带圆角的多级下拉菜单效果
Aug 28 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
js事件触发操作实例分析
Jun 21 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
javascript不可用的问题探究
2013/10/01 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
vue.js实例todoList项目
2017/07/07 Javascript
原生js调用json方法总结
2018/02/22 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
Python中字典和集合学习小结
2017/07/07 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python常用特殊方法实例总结
2019/03/22 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
详解python中各种文件打开模式
2020/01/19 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
军训自我鉴定200字
2014/02/13 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
副总经理岗位职责
2014/03/16 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
2016简单的租房合同范本
2016/03/18 职场文书