jquery实现两种轮播效果
2016-07-24 00:23
567 查看
我想大家在浏览网页时都接触过轮播图。其实在bootstrap中也有相应的轮播插件,下面我们将抛开对其他JS库和框架的依赖,仅适用jquery来实现两种轮播效果。
第一种轮播图应该是大家最熟悉的传统轮播图,以淘宝为例:
这种轮播图的功能大致是这样的:点击左右箭头可以实现图片的切换效果,点击圆点圆点会变色,并快速指向对应的图片,此外,可以无限循环轮播,也就是你一直点图片会一直循环下去。CSS样式会比较多比较杂在这就不给出了,大家可以根据自己的需求,设置position和相应的display来实现定位和切换,其中比较关键的一点是轮播框的最外层容器设置一个overflow:hidden,将溢出隐藏,另外添加一些重复的图片来实现无限循环,因为跳转过程很快,用户是基本感受不到的。将可以实现五张图切换的demo的html和jquery代码贴出,大家可以拿下去试试,自己设置CSS并找一些大小一样的图片即可,如果有什么疑问,欢迎在下面与我交流。
html结构如下
jquery 代码如下
第二种轮播图以新东方在线的教师信息为例:
这种轮播图的轮播特效在底部:点左右箭头,底部的多个头像实现滑动,并且橙色边框选中状态随之切换,大图也随着底部被选中的头像进行切换。参照这种效果,我试着自己写了一个能同一时间显示四个小圆圈demo。并且把代码贴在下面。
html结构如下:
jquery 代码如下
第一种轮播图应该是大家最熟悉的传统轮播图,以淘宝为例:
这种轮播图的功能大致是这样的:点击左右箭头可以实现图片的切换效果,点击圆点圆点会变色,并快速指向对应的图片,此外,可以无限循环轮播,也就是你一直点图片会一直循环下去。CSS样式会比较多比较杂在这就不给出了,大家可以根据自己的需求,设置position和相应的display来实现定位和切换,其中比较关键的一点是轮播框的最外层容器设置一个overflow:hidden,将溢出隐藏,另外添加一些重复的图片来实现无限循环,因为跳转过程很快,用户是基本感受不到的。将可以实现五张图切换的demo的html和jquery代码贴出,大家可以拿下去试试,自己设置CSS并找一些大小一样的图片即可,如果有什么疑问,欢迎在下面与我交流。
html结构如下
<span style="font-size:18px;"><div id="container"> <div id="list" > <img src="img/5.jpg" alt="1"/> <img src="img/1.jpg" alt="1"/> <img src="img/2.jpg" alt="2"/> <img src="img/3.jpg" alt="3"/> <img src="img/4.jpg" alt="4"/> <img src="img/5.jpg" alt="5"/> <img src="img/1.jpg" alt="5"/> </div> <div id="buttons"> <span class="on"></span> <span></span> <span></span> <span></span> <span></span> </div> <a href="javascript:;" id="prev" class="arrow"><</a> <a href="javascript:;" id="next" class="arrow">></a> </div></span>
jquery 代码如下
<span style="font-size:18px;">$(function(){ var index=0; $("#next").click(function(event) { $("#list").stop(false,true); index++; chooseBtn(); move(-600); }); $("#prev").click(function(event) { $("#list").stop(false,true); index--; chooseBtn(); move(600); }); $('#buttons>span').click(function(event) { $('#buttons>span').removeClass('on'); $(this).addClass('on'); var buttonIndex=$(this).index(); index=buttonIndex; var distance=-(buttonIndex+1)*600 $("#list").css("left",distance+"px") }); function chooseBtn(){ if(index==5){ index=0; } else if(index==-1){ index=4; } $('#buttons>span').removeClass('on'); $('#buttons>span').eq(index).addClass('on'); } function move(range){ var Pos=parseInt($("#list").css("left"))+range+"px"; $("#list").animate({"left":Pos},500,function(){ if(parseInt($("#list").css("left"))==-3600){ $("#list").css("left","-600px") } else if(parseInt($("#list").css("left"))==0){ $("#list").css("left","-3000px") } }); } })</span>
第二种轮播图以新东方在线的教师信息为例:
这种轮播图的轮播特效在底部:点左右箭头,底部的多个头像实现滑动,并且橙色边框选中状态随之切换,大图也随着底部被选中的头像进行切换。参照这种效果,我试着自己写了一个能同一时间显示四个小圆圈demo。并且把代码贴在下面。
html结构如下:
<span style="font-size:18px;"> <div id="buttons"> <div id="contents"> <span>2</span> <span>3</span> <span>4</span> <span class="on">1</span> <span>2</span> <span>3</span> <span>4</span> <span>1</span> <span>2</span> <span>3</span> </div> </div> <div id="list" > <img class="active" src="img/1.jpg" alt="1"/> <img src="img/2.jpg" alt="2"/> <img src="img/3.jpg" alt="3"/> <img src="img/4.jpg" alt="4"/> </div></span><pre name="code" class="html"><span style="font-size:18px;"> <a href="javascript:;" id="prev" class="arrow"><</a> <a href="javascript:;" id="next" class="arrow">></a></span>
jquery 代码如下
<span style="font-size:18px;">$(function(){ var index=3; var picindex=0; $("#next").click(function(event) { $("#contents").stop(true,true);//修正bug,stop必须在click之初就执行,否则将出现bug index++; picindex++; chooseBtn(); choosePic(); move(-220); }); $("#prev").click(function(event) { $("#contents").stop(true,true); index--; picindex--; chooseBtn(); choosePic(); move(220); }); $('#buttons span').click(function(event) { var oldDis=$(".on").offset().left; var newDis=$(this).offset().left; console.log(oldDis,newDis); var Distance=(newDis-oldDis)/220; console.log(Distance) $("#buttons span").removeClass('on'); $(this).addClass('on'); for(var i=0;i<Distance;i++){ $("#next").trigger('click'); } }); function choosePic(){ if(p 4000 icindex==4){ picindex=0; } else if(picindex==-1){ picindex=3; } $('#list img').removeClass('active'); $('#list img').eq(picindex).addClass('active'); } function chooseBtn(){ $('#buttons span').removeClass('on'); $('#buttons span').eq(index).addClass('on'); } function move(range){ //$("#contents").stop(true,true) var Pos=parseInt($("#contents").css("left"))+range+"px"; $("#contents").animate({"left":Pos},500,function(){ console.log(index,$("#contents").css("left")); if(parseInt($("#contents").css("left"))==-1320){ $("#contents").css("left","-440px"); index=2; chooseBtn(); } else if(parseInt($("#contents").css("left"))==0){ $("#contents").css("left","-880px"); index=4; chooseBtn(); } }); } })</span>一时兴起仓促写的代码难免有处理不当的地方,如果有什么BUG或者疑问欢迎与我讨论。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- Web布局连载——两栏固定布局(五)
- JavaScript演示排序算法
- 2015-2016网页设计趋势分析 Web Design of Trends
- javascript实现10进制转为N进制数
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- [div+css]晒晒最新制作专题推广页模板
- 最后一次说说闭包
- Ajax
- 盒子模型
- CSS选择器
- CSS样式优先权
- $.ajax()方法详解