js实现简单的无缝轮播效果


Posted in Javascript onSeptember 05, 2020

本文实例为大家分享了js实现简单无缝轮播效果的具体代码,供大家参考,具体内容如下

*{
 margin: 0;
 padding: 0;
}
#box{
 width: 500px;
 height: 200px;
 padding: 5px;
 margin: 50px auto;
 border: 1px solid #999999;
}
.inner{
 width: 500px;
 height: 200px;
 overflow: hidden;
 position: relative;
}
ul,ol{
 list-style: none;
 position: absolute;
}
ul{
 width: 3000px;
 height: 200px;
}
li{
 float: left;
}
ol{
 right: 20px;
 bottom: 20px;
}
ol>li{
 width: 25px;
 height: 25px;
 line-height: 25px;
 text-align: center;
 background-color: #fff;
 border-radius: 50%;
 margin-right: 10px;
 cursor: pointer;
}
ol>li.current{
 background-color: orange;
 color: white;
}
.control{
 display: none;
}
.control>span{
 position: absolute;
 top: 50%;
 margin-top: -20px;
 display: inline-block;
 width: 25px;
 height: 40px;
 line-height: 40px;
 background-color: rgba(0,0,0,0.3);
 color: white;
 font-size: 20px;
 cursor: pointer;
 text-align: center;
}
.right{
 right: 0;
}
<div id="box">
 <div class="inner">
 <ul>
  <li><img src="image/1.jpg" alt=""></li>
  <li><img src="image/2.jpg" alt=""></li>
  <li><img src="image/3.jpg" alt=""></li>
  <li><img src="image/4.jpg" alt=""></li>
  <li><img src="image/5.jpg" alt=""></li>
 </ul>
 <ol>
  <li class="current">1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
 </ol>
 <div class="control">
  <span class="left"><</span>
  <span class="right">></span>
 </div>
 </div>
</div>
var box=document.getElementById("box");
var ul=box.getElementsByTagName("ul")[0];
var ol=box.getElementsByTagName("ol")[0];
var olLiArr=ol.children;
var control=box.getElementsByClassName("control")[0];

ul.appendChild(ul.children[0].cloneNode(true));
var index=0;
var circleIndex=0;

var timer=setInterval(autoPlay,2000);
//鼠标移入移出
box.onmouseover=function () {
 clearInterval(timer);
 control.style.display="block";
};
box.onmouseout=function () {
 timer=setInterval(autoPlay,2000);
 control.style.display="none";
};
//小圆点
for (var i=0;i<olLiArr.length;i++) {
 olLiArr[i].index=i;
 olLiArr[i].onclick=function () {
 if(index===5){
  ul.style.left=0;
  index=0;
 }
 for (var i=0;i<olLiArr.length;i++){
  olLiArr[i].removeAttribute("class");
 }
 this.setAttribute("class","current");
 animate_constSpeed_x(ul,-this.index*500);
 index=this.index;
 circleIndex=this.index;
 }
}
//左右点击
control.children[1].onclick=function () {
 autoPlay();
};
control.children[0].onclick=function () {
 index--;
 if (index<0){
 ul.style.left=-2500+"px";
 index=4;
 }
 animate_constSpeed_x(ul,-index*500);
 circleIndex--;
 if (circleIndex<0){
 circleIndex=4;
 }
 for (var i=0;i<olLiArr.length;i++) {
 olLiArr[i].removeAttribute("class");
 }
 olLiArr[circleIndex].setAttribute("class","current");
};
//自动轮播封装
function autoPlay() {
 index++;
 if (index>5){
 ul.style.left=0;
 index=1;
 }
 animate_constSpeed_x(ul,-index*500);
 circleIndex++;
 if (circleIndex>4){
 circleIndex=0;
 }
 for (var i=0;i<olLiArr.length;i++) {
 olLiArr[i].removeAttribute("class");
 }
 olLiArr[circleIndex].setAttribute("class","current");
}
//匀速封装
function animate_constSpeed_x(ele,endX) {
 clearInterval(ele.timer);
 var step=(endX-ele.offsetLeft)>0?10:-10;
 ele.timer=setInterval(function () {
 ele.style.left=ele.offsetLeft+step+"px";
 console.log(1);
 if(Math.abs(endX-ele.offsetLeft)<=Math.abs(step)){
  clearInterval(ele.timer);
  ele.style.left=endX+"px";
 }
 },10)
}

js实现简单的无缝轮播效果

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

Javascript 相关文章推荐
js 字符串转化成数字的代码
Jun 29 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
ligerUI的ligerDialog关闭刷新的方法
Sep 27 Javascript
JS实现音量控制拖动
Jan 15 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 Javascript
JS+CSS实现炫酷光感效果
Sep 05 #Javascript
js实现炫酷光感效果
Sep 05 #Javascript
js实现搜索提示框效果
Sep 05 #Javascript
jQuery实现简单三级联动效果
Sep 05 #jQuery
javascript canvas实现简易时钟例子
Sep 05 #Javascript
vue中使用vue-pdf的方法详解
Sep 05 #Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 #Javascript
You might like
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP中的替代语法介绍
2015/01/09 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
javascript静态的url如何传递
2007/05/03 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
python计算最大优先级队列实例
2013/12/18 Python
Python中的CURL PycURL使用例子
2014/06/01 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
中级会计职业生涯规划范文
2014/01/16 职场文书
汉语言文学职业规划
2014/02/14 职场文书
公司晚会主持词
2014/03/22 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
创先争优演讲稿
2014/09/15 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
招标保密承诺书
2015/01/20 职场文书
Python编写nmap扫描工具
2021/07/21 Python
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
MySQL数据库表约束讲解
2022/06/21 MySQL