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 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
javascript JSON操作入门实例
Apr 16 Javascript
JS中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
javascript常用功能汇总
Jul 05 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
Vue.js样式动态绑定实现小结
Jan 24 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
JS数据类型判断的几种常用方法
Jul 07 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动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
Python可迭代对象操作示例
2019/05/07 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
美术教学感言
2014/02/22 职场文书
文明寄语大全
2014/04/11 职场文书
安全施工标语
2014/06/07 职场文书
个人自查自纠材料
2014/10/14 职场文书
2014年维修工作总结
2014/11/22 职场文书
实习生辞职信范文
2015/03/02 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript