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编写的第一人称射击游戏
Feb 25 Javascript
jquery实现图片灯箱明暗的遮罩效果
Nov 15 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
javascript实现禁止复制网页内容
Dec 16 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
javascript中href和replace的比较(详解)
Nov 25 Javascript
vue.js实例todoList项目
Jul 07 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
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
教你如何把一篇文章按要求分段
2006/10/09 PHP
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
Vue自定义指令详解
2017/07/28 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
应届护士推荐信
2013/11/16 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书