jquery实现定时自动轮播特效


Posted in Javascript onDecember 10, 2015

这次的轮播图是在上一篇文章jQuery手动点击实现图片轮播特效的基础上写出来的,也就是本次展示的是手动点击轮播效果以及定时自动轮播效果的程序,建议想连贯学习的小伙伴把我之前的文章看一看,看完后再看这篇文章~~~~

下面来看看我做的最终定时自动轮播效果以及手动点击轮播效果:

 jquery实现定时自动轮播特效

对于上面的展示动画速度比较快的原因是因为我的截图软件是绿色版,免费的~~~你们懂得,就是卡卡的,真正的效果比这个速度慢,而且还是匀速,可以商用~~~所以上面的展示动画只能当做完成效果的参考。
一、主体程序

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8" />
 <title>轮播图①(手动点击轮播)</title>
 <link type="text/css" rel="stylesheet" href="css/layout.css" />
 </head>
 <body>
 <div class="slideShow">
 <!--图片布局开始-->
 <ul>
 <li><a href="#"><img src="img/picture01.jpg" /></a></li>
 <li><a href="#"><img src="img/picture02.jpg" /></a></li>
 <li><a href="#"><img src="img/picture03.jpg" /></a></li>
 <li><a href="#"><img src="img/picture04.jpg" /></a></li>
 </ul>
 <!--图片布局结束-->
 
 <!--按钮布局开始-->
 <div class="showNav">
 <span class="active">1</span>
 <span>2</span>
 <span>3</span>
 <span>4</span>
 </div>
 <!--按钮布局结束-->
 </div>
 <script src="js/jquery-1.11.3.js"></script>
 <script src="js/layout.js"></script>
 </body>
</html>

额,上面的主体程序和前一篇没有区别,未做任何修改~~~~~感兴趣的可以查看第一篇文章,我本次随笔重点会在Jquery程序里面
二、CSS样式

*{
 margin: 0;
 padding: 0;
}
ul{
 list-style: none;
}
.slideShow{
 width: 346px;
 height: 210px; /*其实就是图片的高度*/
 border: 1px #eeeeee solid;
 margin: 100px auto;
 position: relative;
 overflow: hidden; /*此处需要将溢出框架的图片部分隐藏*/
}
.slideShow ul{
 width: 2000px;
 position: relative; /*此处需注意relative : 对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置,如果没有这个属性,图片将不可左右移动*/
}
.slideShow ul li{
 float: left; /*让四张图片左浮动,形成并排的横着布局,方便点击按钮时的左移动*/
 width: 346px;
}
.slideShow .showNav{ /*用绝对定位给数字按钮进行布局*/
 position: absolute;
 right: 10px;
 bottom: 5px;
 text-align:center;
 font-size: 12px; 
 line-height: 20px;
}
.slideShow .showNav span{
 cursor: pointer;
 display: block;
 float: left;
 width: 20px;
 height: 20px;
 background: #ff5a28;
 margin-left: 2px;
 color: #fff;
}
.slideShow .showNav .active{
 background: #b63e1a;
}

三、jQuery程序
首先说一下定时自动轮播的原理:
1、首先得开一个定时器,假设定时器的时间设置为2000ms,也就是2S定时器执行一次操作
2、定时器每隔2S执行的操作就是模拟按次序点击数字按钮,也就是触发click事件,让图片左移
先来看大体效果实现的jQuery代码一:      

var timer=null; //定时器返回值,主要用于关闭定时器
 var iNow=0; //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
 timer=setInterval(function(){ //打开定时器
 iNow++;  //让图片的索引值次序加1,这样就可以实现顺序轮播图片
 showNumber.eq(iNow).trigger("click"); //模拟触发数字按钮的click事件
 },2000); //2000为轮播的时间

上面的程序可以实现每隔2S图片的轮播效果,但是轮播到最后一张图的时候会停止,因为没有判断iNow是否到达最后一张图,所以有了下面的代码二

var timer=null; //定时器返回值,主要用于关闭定时器
 var iNow=0; //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
 timer=setInterval(function(){ //打开定时器
 iNow++;  //让图片的索引值次序加1,这样就可以实现顺序轮播图片
 if(iNow>showNumber.length-1){ //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
 iNow=0;
 }
 showNumber.eq(iNow).trigger("click"); //模拟触发数字按钮的click
 },2000); //2000为轮播的时间

所以jQuery程序的完整代码程序如下:

$(document).ready(function(){
 var slideShow=$(".slideShow"), //获取最外层框架的名称
 ul=slideShow.find("ul"), 
 showNumber=slideShow.find(".showNav span"),//获取按钮
 oneWidth=slideShow.find("ul li").eq(0).width(); //获取每个图片的宽度
 var timer=null; //定时器返回值,主要用于关闭定时器
 var iNow=0; //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
 
 showNumber.on("click",function(){ //为每个按钮绑定一个点击事件 
 $(this).addClass("active").siblings().removeClass("active"); //按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
 var index=$(this).index(); //获取哪个按钮被点击,也就是找到被点击按钮的索引值
 ul.animate({
 "left":-oneWidth*iNow, //注意此处用到left属性,所以ul的样式里面需要设置position: relative; 让ul左移N个图片大小的宽度,N根据被点击的按钮索引值index确定
 })
 });
 
 timer=setInterval(function(){ //打开定时器
 iNow++;  //让图片的索引值次序加1,这样就可以实现顺序轮播图片
 if(iNow>showNumber.length-1){ //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
 iNow=0;
 }
 showNumber.eq(iNow).trigger("click"); //模拟触发数字按钮的click
 },2000); //2000为轮播的时间
})

上面的注释写的很详细了,主要是为了方便想学习的小伙伴看,但是实际上我写程序不会注释的那么详细,都是很简单的内容啦,看到这里你可能以为jQuery程序就完了,那就大错特错了,因为自动轮播效果是正确的,但是手动点击时就会出错,我特意做了一段Gif动画展示出错的效果:

jquery实现定时自动轮播特效

看到上面的效果你就会忽然大悟,图片自动轮播时,你就算点击按钮它也只是附和你一下,跳转到你点击的按钮,但是仅仅持续一会还是按它轮播的次序,不理会你点击的按钮后应该走的轮播次序,至于原因嘛

是因为手动点击时index的值未赋值给定时器的图片索引iNow,这样iNow就无法存储你点击的按钮索引值,也就是不知道你点击的哪个按钮,既然知道了原因,那么下面就需要进行修改了。

修改完成后的jQuery程序最终版就是:

$(document).ready(function(){
 var slideShow=$(".slideShow"), //获取最外层框架的名称
 ul=slideShow.find("ul"), 
 showNumber=slideShow.find(".showNav span"),//获取按钮
 oneWidth=slideShow.find("ul li").eq(0).width(); //获取每个图片的宽度
 var timer=null; //定时器返回值,主要用于关闭定时器
 var iNow=0; //iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
 
 showNumber.on("click",function(){ //为每个按钮绑定一个点击事件 
 $(this).addClass("active").siblings().removeClass("active"); //按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
 var index=$(this).index(); //获取哪个按钮被点击,也就是找到被点击按钮的索引值
 iNow=index;
 ul.animate({
 "left":-oneWidth*iNow, //注意此处用到left属性,所以ul的样式里面需要设置position: relative; 让ul左移N个图片大小的宽度,N根据被点击的按钮索引值iNOWx确定
 })
 });
 
 timer=setInterval(function(){ //打开定时器
 iNow++;  //让图片的索引值次序加1,这样就可以实现顺序轮播图片
 if(iNow>showNumber.length-1){ //当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
 iNow=0;
 }
 showNumber.eq(iNow).trigger("click"); //模拟触发数字按钮的click
 },2000); //2000为轮播的时间
})

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,下次就为大家分享鼠标悬浮在轮播图上方时图片停止轮播,鼠标移走后图片接着进行轮播的代码,不要走开。

Javascript 相关文章推荐
完美解决JS中汉字显示乱码问题(已解决)
Dec 27 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
Feb 03 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 #Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 #Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 #Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 #Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 #Javascript
js实现新年倒计时效果
Dec 10 #Javascript
jquery判断复选框是否选中进行答题提示特效
Dec 10 #Javascript
You might like
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php技巧小结【推荐】
2017/01/19 PHP
php中序列化与反序列化详解
2017/02/13 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python写程序统计词频的方法
2019/07/29 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
公司离职证明样本
2014/09/13 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python