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 相关文章推荐
JS打印gridview实现原理及代码
Feb 05 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
JS实现回到页面顶部动画效果的简单实例
May 24 Javascript
js实现二级导航功能
Mar 03 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
JS判断数组那点事
Oct 10 Javascript
Js面试算法详解
Apr 08 Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 Javascript
js实现限定范围拖拽的示例
Oct 26 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函数
2006/12/06 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP中的替代语法介绍
2015/01/09 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
python 网络编程详解及简单实例
2017/04/25 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
如何提高python 中for循环的效率
2020/04/15 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
咖啡厅创业计划书范本
2014/01/22 职场文书
小学毕业寄语大全
2014/04/03 职场文书
优秀学生评语大全
2014/04/25 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
部门2015年度工作总结
2015/04/29 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python