js轮播图无缝滚动效果


Posted in Javascript onJune 17, 2017

在做轮播图时如果首尾不能连起来的话,效果会有点丑,下面介绍一种我常用的方法:

先文字说明一下:

如果要展示5张图,分别为1,2,3,4,5  那么在代码的引入中是这样的:1,2,3,4,5,1

按顺序的轮播在此就不多说,重点说的是5>1和1>5的轮播

i  表示当前图片的索引

pre 表示上一张图片的按钮

next 表示下一张图片的按钮

ul 表示图片列表

(1)  5>1>2...   当“next”按钮从5到1时按顺序正常轮播,当前图片为第二个“1”时,下一张图片应该是“2”,那么再“next”时是ul的left的值为0,i==1;

(2) 1>5>4....  当“pre”按钮从当前图片“1”(第一个1)轮播到图片5时,i==4,ul的left值变为img宽的-5倍,也就是让第一个1悄悄的变为最后一个1;

用语言表述有点乱,下面放代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style type="text/css">
 *{padding: 0;margin: 0;}
 .container{
 width: 273px;height: 163px;overflow: hidden;
 position: relative;margin: 0 auto;
 }
 .list{
 position: absolute;width: 1638px;top: 0;left: 0px;
 }
 .list li{
 float: left;list-style: none;
 }
 .btn{
 position: absolute;display: block;width: 40px;height: 50px;font-size: 40px;
 text-align: center;font-weight: bold;top: 50%;margin-top: -25px;background-color: rgba(255,255,255,0.5);cursor:pointer;
 }
 .btn:hover{
 background-color: rgba(0,0,0,0.3);color: #fff;
 }
 .pre{
 left: 0;
 }
 .next{
 right: 0;
 }
 .nav{
 position: absolute;bottom: 5px;display: flex;justify-content: center;width: 100%;
 }
 .nav span{
 width: 10px;height: 10px;border-radius: 10px;background-color: #fff;z-index: 2;display: inline-block;margin-right: 10px;cursor: pointer;
 }
 span.on{
 background-color: orange;
 }
 </style>
</head>
<body>
 <div class="container">
 <ul class="list" style="left: 0px">
 <li><img src="./images/1.png" alt=""></li>
 <li><img src="./images/2.png" alt=""></li>
 <li><img src="./images/3.png" alt=""></li>
 <li><img src="./images/4.png" alt=""></li>
 <li><img src="./images/5.png" alt=""></li>
 <li><img src="./images/1.png" alt=""></li>
 </ul>
 <div class="nav">
 <span class="on"></span>
 <span></span>
 <span></span>
 <span></span>
 <span></span>
 </div>
 <em class="next btn">></em>
 <em class="pre btn"><</em>
 </div>
 <script type="text/javascript" src="../jquery.js"></script>
 <script type="text/javascript">
 $(function(){
 var i=0;
 $('.next').click(function(){
 i++;
 console.log(i);
 
 moveImg(i);
 
 });
 $('.pre').click(function(){
 i--;
 moveImg(i);
 
 });
 $('.nav span').click(function(){
 var _index=$(this).index();
 i=_index;
 moveImg(i);
 
 
 });
 // i的作用:决定下一张图片是谁————也就是说ul的left是多少。
 // $('.list').css({left)的值是从图a过度是此时的ul的left。
 function moveImg(){
 if (i==6) {
 i=1;
 $('.list').css({'left':'0'});
 }
 // 是第一张
 if(i==-1){
 i=4;
 $('ul').css({left:(5*-273)});
 }
 $('.list').stop().animate({'left':-273*i+'px'},1000);
 if (i==5) {
 $('.nav span').eq(0).addClass('on').siblings().removeClass('on');
 
 }
 $('.nav span').eq(i).addClass('on').siblings().removeClass('on');
 
 }
 })
 </script>
</body>
</html>

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
js实现(全选)多选按钮的方法【附实例】
Mar 30 Javascript
浅析JavaScript回调函数应用
May 22 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
jQuery使用each方法与for语句遍历数组示例
Jun 16 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
关于vue表单提交防双/多击的例子
Oct 31 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 Javascript
关于对TypeScript泛型参数的默认值理解
Jul 15 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 #Javascript
vue-router单页面路由
Jun 17 #Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 #Javascript
JavaScript输入框字数实时统计更新
Jun 17 #Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
Jun 17 #Javascript
bootstrap paginator分页前后台用法示例
Jun 17 #Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
Jun 17 #Javascript
You might like
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP Token(令牌)设计
2008/03/15 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
js中数组Array的一些常用方法总结
2013/08/12 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
vue实现短信验证码输入框
2020/04/17 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
聊聊python中的循环遍历
2020/09/07 Python
python eventlet绿化和patch原理
2020/11/21 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
和平主题的演讲稿
2014/01/12 职场文书
图书室标语
2014/06/21 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python