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 相关文章推荐
javascript中的location用法简单介绍
Mar 07 Javascript
大家未必知道的Js技巧收藏
Apr 07 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
Javascript节点关系实例分析
May 15 Javascript
老生常谈JavaScript中的this关键字
Oct 01 Javascript
微信小程序 实战小程序实例
Oct 08 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
vue非父子组件通信问题及解决方法
Jun 11 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
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
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
php防止sql注入简单分析
2015/03/18 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
javascript下数值型比较难点说明
2010/06/07 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
input file上传 图片预览功能实例代码
2016/10/25 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
Python+django实现文件上传
2016/01/17 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
求网格中的黑点分布
2013/11/06 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
实习自我鉴定模板
2013/09/28 职场文书
中文系学生自荐信范文
2013/11/13 职场文书
作弊检讨书1000字
2014/02/01 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
质量保证书
2015/01/17 职场文书
学困生帮扶工作总结
2015/08/13 职场文书