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 定义新对象方法
Feb 20 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
JQuery 动态生成Table表格实例代码
Dec 02 Javascript
详解浏览器渲染页面过程
Feb 09 Javascript
zTree树形插件异步加载方法详解
Jun 14 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
react中使用swiper的具体方法
May 15 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 Javascript
vue路由分文件拆分管理详解
Aug 13 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 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
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
Python中title()方法的使用简介
2015/05/20 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
毕业自我评价范文
2013/11/17 职场文书
优秀交警事迹材料
2014/01/26 职场文书
快餐公司创业计划书
2014/04/29 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android