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 相关文章推荐
一段实时更新的时间代码
Jul 07 Javascript
alixixi runcode.asp的代码不错的应用
Aug 08 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
jquery实现的省市区三级联动
Apr 02 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
Web技术实现移动监测的介绍
Sep 18 Javascript
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
浅谈redux, koa, express 中间件实现对比解析
May 23 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 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
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
JavaScript 语言的递归编程
2010/05/18 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
python使用marshal模块序列化实例
2014/09/25 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python之生产者消费者模型实现详解
2019/07/27 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
经贸专业毕业生求职信范文
2014/05/01 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
体育个人工作总结
2015/02/09 职场文书
店长岗位职责
2015/02/11 职场文书
人工作失职检讨书
2015/05/05 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python