视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JS轮播停留效果实现步骤详解
2020-11-27 19:46:33 责编:小采
文档
 这次给大家带来JS轮播停留效果实现步骤详解,JS轮播停留效果实现的注意事项有哪些,下面就是实战案例,一起来看一下。

一、思路

1.轮播停留与无线滚动十分类似,都是利用属性及变量控制移动实现轮播;

2.不同的是轮播停留需要添加过渡属性搭配定时器即可实现轮播停留效果;

二、步骤

1.写基本结构样式

需在末尾多添加一张与第一张相同的图片,消除切换时的抖动;

2.添加轮播停留事件 有了之前的基础,直接添加索引圈默认事件到轮播停留事件内;

注意:当轮播到最后一张时,需要消除掉过渡,这里使用setTimeout定时器,卡最后一张图片轮播完不延时,直接跳转到第一张,由于第一张和最后一张一样,所以会形成视觉盲区,看起来是连续轮播效果;

//轮播停留方法
function move() {
 box.className = "box anmint";
 circle[count].style.backgroundColor = "";
 count++;
 box.style.marginLeft = (-800 * count) + "px";
 //最后一张走完之后,执行一次定时器不循环,卡过渡时间,消除切换
 setTimeout(function () {
 if (count >= 6) {
 count = 0;
 box.className = "box";
 //marginLeft=0之前去除过渡属性
 box.style.marginLeft = "0px";
 }
 circle[count].style.backgroundColor = "red";
 }, 500);
}

3.添加进入索引圈事件

这和淡入淡出进入索引圈事件基本一致,不同的是这里不用调用轮播停留事件,直接利用当前index来索引使图片跟随变换;注意最后要标记count=this.index值,令再次执行默认行为时是紧跟着当前显示图片向后执行默认行为;

//进入索引圈事件
for(var j=0;j<circle.length;j++){
 circle[j].index=j;
 circle[j].onmouseenter=function(){
 for(var k=0;k<circle.length;k++){
 circle[k].style.backgroundColor="";
 }
 this.style.backgroundColor="red";
 //图片跟随移动
 box.className="box anmint";
 box.style.marginLeft=(-800*this.index)+"px";
 count=this.index;
 }
}

4.完善鼠标进入离开代码

效果图:

完整代码:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title>JS轮播停留效果</title> 
 <style> 
 *{margin: 0;padding: 0;} 
 html,body{width: 100%;height: 100%;} 
 .block{ 
 width: 800px; 
 height: 400px; 
 margin: 80px auto; 
 position: relative; 
 border: 1px solid red; 
 overflow: hidden; 
 } 
 .box{ 
 width: 5600px; 
 height: 400px; 
 float: left; 
 } 
 .anmint{ 
 transition: all 0.5s ease-in-out; 
 } 
 img{ 
 width: 800px; 
 height: 400px; 
 float: left; 
 } 
 .cir{ 
 width: 150px; 
 height: 20px; 
 z-index: 7; 
 position: absolute; 
 bottom: 10px; 
 left: 320px; 
 } 
 .circle{ 
 width: 10px; 
 height: 10px; 
 border: 2px solid grey; 
 border-radius: 50%; 
 float: left; 
 margin: 0 5px; 
 } 
 </style> 
 <script> 
 window.onload=function(){ 
 var box=document.getElementsByClassName("box")[0]; 
 var count=0; 
 //索引圈事件 
 var circle=document.getElementsByClassName("circle"); 
 circle[0].style.backgroundColor="red"; 
 var time=setInterval(function(){ 
 move(); 
 },2000); 
 //鼠标进入事件 
 var block=document.getElementsByClassName("block")[0]; 
 block.onmouseenter=function(){ 
 clearInterval(time); 
 }; 
 //鼠标离开事件 
 block.onmouseleave=function(){ 
 time=setInterval(function(){ 
 move(); 
 },2000); 
 }; 
 //进入索引圈事件 
 for(var j=0;j<circle.length;j++){ 
 circle[j].index=j; 
 circle[j].onmouseenter=function(){ 
 for(var k=0;k<circle.length;k++){ 
 circle[k].style.backgroundColor=""; 
 } 
 this.style.backgroundColor="red"; 
 //图片跟随移动 
 box.className="box anmint"; 
 box.style.marginLeft=(-800*this.index)+"px"; 
 count=this.index; 
 } 
 } 
 //轮播停留方法 
 function move() { 
 box.className = "box anmint"; 
 circle[count].style.backgroundColor = ""; 
 count++; 
 box.style.marginLeft = (-800 * count) + "px"; 
 //最后一张走完之后,执行一次定时器不循环,卡过渡时间,消除切换 
 setTimeout(function () { 
 if (count >= 6) { 
 count = 0; 
 box.className = "box"; 
 //marginLeft=0之前去除过渡属性 
 box.style.marginLeft = "0px"; 
 } 
 circle[count].style.backgroundColor = "red"; 
 }, 500); 
 } 
 } 
 </script> 
</head> 
<body> 
<p class="block"> 
 <p class="box"> 
 <img class="imgg" src="./image/box1.jpg"> 
 <img class="imgg" src="./image/box2.jpg"> 
 <img class="imgg" src="./image/box3.jpg"> 
 <img class="imgg" src="./image/box4.jpg"> 
 <img class="imgg" src="./image/box5.jpg"> 
 <img class="imgg" src="./image/box6.jpg"> 
 <img class="imgg" src="./image/box1.jpg"> 
 </p> 
 <p class="cir"> 
 <p class="circle"></p> 
 <p class="circle"></p> 
 <p class="circle"></p> 
 <p class="circle"></p> 
 <p class="circle"></p> 
 <p class="circle"></p> 
 </p> 
</p> 
</body> 
</html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Linux中正则表达式使用详解

小程序保存图片分享到朋友圈功能实现

下载本文
显示全文
专题