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 相关文章推荐
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
Dec 26 Javascript
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
Jquery中Event对象属性小结
Feb 27 Javascript
javascript截取字符串小结
Apr 28 Javascript
基于jQuery实现动态数字展示效果
Aug 12 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
Jan 25 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 Javascript
vue 通过base64实现图片下载功能
Dec 19 Vue.js
使用JS前端技术实现静态图片局部流动效果
Aug 05 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python简单读取json文件功能示例
2017/11/30 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
python 实现逻辑回归
2020/12/30 Python
新员工培训个人的自我评价
2013/10/09 职场文书
公司董事长职责
2013/12/12 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
新农村建设标语
2014/06/24 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
鸟的天堂导游词
2015/01/31 职场文书
2015年端午节活动方案
2015/05/05 职场文书
离职信范本
2015/06/23 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Python安装使用Scrapy框架
2022/04/12 Python