原生javascript实现循环轮播图滚动效果
2019-03-09 20:19
453 查看
html部分
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="css/index.css"> </head> <body> <div class="main"> <div class="img"> <img src="img/5.jpg" alt=""> <img src="img/1.jpg" alt=""> <img src="img/2.jpg" alt=""> <img src="img/3.jpg" alt=""> <img src="img/4.jpg" alt=""> <img src="img/5.jpg" alt=""> <img src="img/1.jpg" alt=""> </div> <ul class="cir"> <li class="active"></li> <li></li> <li></li> <li></li> <li></li> </ul> <a href="javascript:;" id="prev"><</a> <a href="javascript:;" id="next">></a> </div> <script src="js/index.js"></script> </body> </html>
css部分
.main { width:500px; height:280px; margin:50px auto; border:1px solid #333; position: relative; overflow: hidden; } .img { position: absolute; left: -500px;; width:3500px; height:280px; font-size: 0px; } .img img { width:500px; height:280px; } .active { background-color:orangered; } ul { position: absolute; left:50%; margin-left: -45px; bottom: 20px; padding:0; font-size: 0; background:rgba(255, 255, 255, 0.3); border-radius: 20px; } li { width:8px; height:8px; margin: 5px; display:inline-block; list-style: none; background-color:#fff; border-radius: 4px; cursor: pointer; } li:active{ background-color:orangered; transform:scale(2.5); -ms-transform:rotate(2.5); -moz-transform:rotate(2.5); -webkit-transform:rotate(2.5); -o-transform:rotate(2.5); } a { position: absolute; width:30px; height:40px; display:none; text-decoration: none; background:rgba(255, 255, 255, 0.3); font-size: 24px; line-height: 40px; text-align: center; color:#fff; top:50%; margin-top: -20px; } #prev { left:0; } #next { right:0; }
javascript部分
let prev = document.getElementById("prev"); let next = document.getElementById("next"); let main = document.getElementsByClassName('main')[0]; let cirLis = document.getElementsByClassName('cir')[0].getElementsByTagName('li'); let imgDiv = document.getElementsByClassName("img")[0]; let cirLength = cirLis.length; let timer = '',timer1 = '', flag = false; const IMGWIDTH = 500; const IMGCOUNT = 5; prev.onclick = function () { if (flag == true) return; moveImg(IMGWIDTH); } next.onclick = function () { if (flag == true) return; moveImg(-IMGWIDTH); } for (let i = 0; i < cirLength; i++) { cirLis[i].onclick = function() { if (flag == true) return; let zuobiao = -(i+1) * IMGWIDTH; let distance = zuobiao - imgDiv.offsetLeft; if(distance == 0) return; moveImg(distance); } } main.onmouseover = function() { prev.style.display = 'block'; next.style.display = "block"; clearInterval(timer1); } main.onmouseout = function() { prev.style.display = 'none'; next.style.display = "none"; timer1 = setInterval(() => { moveImg(-IMGWIDTH); }, 2000); } timer1 = setInterval(() => { moveImg(-IMGWIDTH); }, 2000); /** * @param distance 移动图片的相对距离 */ function moveImg(distance) { let eachTime = 5; let time = 600; let eachDis = distance / (time / eachTime); let firDis = imgDiv.offsetLeft; let finDis = imgDiv.offsetLeft + distance; timer = setInterval(function () { flag = true; if (imgDiv.offsetLeft > finDis && distance > 0 || imgDiv.offsetLeft < finDis && distance < 0) { imgDiv.style.left = finDis + 'px'; if (finDis == 0) { finDis = -IMGCOUNT * IMGWIDTH; } if (finDis == -3000) { finDis = -IMGWIDTH; } imgDiv.style.left = finDis + 'px'; moveLi(finDis); clearInterval(timer); flag = false; return; } imgDiv.style.left = imgDiv.offsetLeft + eachDis + "px"; }, eachTime); } //移动小圆点 function moveLi(distance) { distance = Math.abs(distance); let index = distance / IMGWIDTH; delActive(); cirLis[index - 1].className = 'active'; } function delActive() { let activeLi = document.getElementsByClassName('active')[0]; if (activeLi) { activeLi.className = ""; } }
相关文章推荐
- 原生JavaScript实现手机端循环滚动背景效果
- 原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
- 用DIV+javascript实现首尾相连循环滚动效果(兼容firefox)
- 原生javascript实现图片轮播效果——续
- javascript原生小练习(二)--轮播图滚动效果
- JavaScript实现走马灯效果[无缝连接、循环滚动] 向上
- JavaScript实现走马灯效果[无缝连接、循环滚动] 向下
- 原生javascript实现图片无缝滚动效果
- 原生javascript实现图片轮播效果
- 原生js实现图片循环轮播效果
- 原生javascript实现图片轮播效果
- JavaScript代码实现图片循环滚动效果
- 原生javascript实现图片轮播效果代码
- JavaScript实现走马灯效果[无缝连接、循环滚动] 向左
- JavaScript实现走马灯效果,上 下 左 右无缝连接、循环滚动
- JavaScript实现走马灯效果[无缝连接、循环滚动]
- 用DIV+javascript实现首尾相连循环滚动效果(兼容firefox)
- 用原生的javascript 实现一个无限滚动的轮播图
- JavaScript实现走马灯效果[无缝连接、循环滚动] 向右
- 用DIV+javascript实现首尾相连循环滚动效果(兼容firefox)