这篇文章给大家分享的是有关原生Js如何实现简单无缝滚动轮播图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
原简单的滚动轮播代码
<html><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .scroll{ position: relative; width: 830px; height: 130px; border: 10px solid rgb(15, 15, 15); margin: 100px auto; overflow: hidden; } .scroll ul{ position: absolute; width: 5000px; height: 130px; top: 0; left: 0; } .scroll ul li{ float: left; width: 200px; height: 130px; margin-right: 10px; overflow: hidden; } </style></head><body> <div id="scroll" class="scroll"> <ul id="munit"> <li><img src="../BOM/shuzi/3.png" alt=""></li> <li><img src="../BOM/shuzi/4.png" alt=""></li> <li><img src="../BOM/shuzi/5.png" alt=""></li> <li><img src="../BOM/shuzi/6.png" alt=""></li> <li><img src="../BOM/shuzi/7.png" alt=""></li> <li><img src="../BOM/shuzi/8.png" alt=""></li> <li><img src="../BOM/shuzi/9.png" alt=""></li> <li><img src="../BOM/shuzi/3.png" alt=""></li> <li><img src="../BOM/shuzi/4.png" alt=""></li> <li><img src="../BOM/shuzi/5.png" alt=""></li> <li><img src="../BOM/shuzi/6.png" alt=""></li> <li><img src="../BOM/shuzi/7.png" alt=""></li> <li><img src="../BOM/shuzi/8.png" alt=""></li> <li><img src="../BOM/shuzi/9.png" alt=""></li> </ul> </div> <script> //获取元素 var scroll = document.getElementById("scroll"); var munit = document.getElementById("munit"); var li = munit.children; // 进行滚动 var nowLeft = 0; //要找到ul元素运动的折返点 var back = -1470;//图和边框是li的宽度,展示的有4张图,所以折返点就是1260 //定时器 var timer = setInterval(run,20); // 鼠标移上scroll停止 scroll.onmouseover = function(){ clearInterval(timer); } // 移开轮播 scroll.onmouseout = function(){ timer = setInterval(run,20); } //运动函数 function run(){ nowLeft -= 2; //判断是否走到了折返点,走到了,则瞬间切换到0位置 if(nowLeft <= back){ nowLeft = 0; } munit.style.left = nowLeft + "px"; } </script></body></html>
在<div id="scroll">结构给ul新增的一个父级div,这样之后添加图片,后期通过获取ul宽度就可以了计算折算点
1、折返点计算需要通过Js自动计算
var back = -munit.offsetWidth;//元素左移,值为负数
2、自动生成另一组对应的图片结构 li
munit.innerHTML = munit.innerHTML + munit.innerHTML;//这样就会增加一组li标签,后期增加图片也会随之增加
修改部分代码,
css改写部分: .scroll .inner{ position: relative; width: 5000px; } .scroll ul{ position: absolute; height: 130px; top: 0; left: 0; list-style: none;body改写部分: <body> <div id="scroll" class="scroll"> <div class="inner"> <ul id="munit"> <li><img src="../BOM/shuzi/3.png" alt=""></li> <li><img src="../BOM/shuzi/4.png" alt=""></li> <li><img src="../BOM/shuzi/5.png" alt=""></li> <li><img src="../BOM/shuzi/6.png" alt=""></li> <li><img src="../BOM/shuzi/7.png" alt=""></li> <li><img src="../BOM/shuzi/8.png" alt=""></li> <li><img src="../BOM/shuzi/9.png" alt=""></li> <li><img src="../BOM/shuzi/10.png" alt=""></li> </ul> </div> </div>JS改写部分:<script> //获取元素 var scroll = document.getElementById("scroll"); var munit = document.getElementById("munit"); //改写部分 //1 折返点计算需要通过Js自动计算 var back = -munit.offsetWidth;//元素左移,值为负数 //2 自动生成另一组对应的图片结构 li munit.innerHTML = munit.innerHTML + munit.innerHTML; // 进行滚动 var nowLeft = 0; //定时器 var timer = setInterval(run,20); // 鼠标移上scroll停止 scroll.onmouseover = function(){ clearInterval(timer); } // 移开轮播 scroll.onmouseout = function(){ timer = setInterval(run,20); } //运动函数 function run(){ nowLeft -= 1; //判断是否走到了折返点,走到了,则瞬间切换到0位置 if(nowLeft <= back){ nowLeft = 0; } munit.style.left = nowLeft + "px"; } </script></body></html>
这样的代码耦合性低,也适合任意个数的li、任意大小的图片的加入
感谢各位的阅读!关于“原生Js如何实现简单无缝滚动轮播图”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!