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操作图片(增,删,改) 例子
Apr 17 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
Kotlin学习第一步 kotlin语法特性
May 25 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
JavaScript实现手风琴效果
Feb 18 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缩略图生成程式(需要GD库支持)
2007/03/06 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python最小二乘法矩阵
2019/01/02 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
python读取Excel表格文件的方法
2019/09/02 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
Django 实现图片上传和下载功能
2020/12/31 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
岗位职责的定义
2013/11/10 职场文书
优秀生推荐信范文
2013/11/28 职场文书
语文教育专业求职信
2014/06/28 职场文书
政府四风问题整改措施
2014/10/04 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
2014年秘书工作总结
2014/11/25 职场文书
详解Redis瘦身指南
2021/05/26 Redis
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
Win11软件图标固定到任务栏
2022/04/19 数码科技