js原生实现轮播图(滚动式轮播图)
js原生实现滚动式轮播图
HTML部分
<body>
<div id="banner">
<ul id="imglist">
<li>
<a href=""><img src="image/01.jpg" alt=""></a>
</li>
<li>
<a href=""><img src="image/02.jpg" alt=""></a>
</li>
<li>
<a href=""><img src="image/03.jpg" alt=""></a>
</li>
<li>
<a href=""><img src="image/04.jpg" alt=""></a>
</li>
<li>
<a href=""><img src="image/01.jpg" alt=""></a>
</li>
</ul>
<ul id="iconlist">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
</body>
CSS部分
<style> * { padding: 0px; margin: 0px; list-style: none; text-decoration: none; } #banner { position: relative; width: 1280px; height: 600px; overflow: hidden; border: 2px solid red; } #imglist { width: 7680px; height: 600px; } #imglist>li { float: left; width: 1280px; height: 600px; } #imglist>li img { width: 100%; height: 100%; } #iconlist { position: absolute; display: flex; justify-content: center; align-items: center; width: 100%; height: 50px; bottom: 0px; left: 0px; } #iconlist li { display: flex; justify-content: center; align-items: center; width: 30px; height: 30px; background-color: #fff; border-radius: 50%; margin: 0px 20px; cursor: pointer; } </style>
JS部分
<script>
// 获取图片标签
var imgs = document.getElementById("imglist").getElementsByTagName("li");
// 获取列表
var icons = document.getElementById("iconlist").getElementsByTagName("li");
// 初始化图片的位置
var left = 0;
imglist.style.marginLeft = left + "px"
// 设置一个定时器
var timer;
// 自调用
run()
function run() {
if (left <= -5120) {
imglist.style.marginLeft = "0px";
left = 0;
}
// 如果位置为整张图片,暂停一秒
var n = (left % 1280 == 0) ? 1500 : 10;
changeimg();
// 计算图片的下标
var m = Math.floor(-left / 1280);
changeicon(m);
left -= 10
timer = setTimeout(run, n);
}
function changeimg() {
imglist.style.marginLeft = left + "px";
}
function changeicon(m) {
for (var i = 0; i < icons.length; i++) {
icons[i].style.backgroundColor = "";
}
icons[m].style.backgroundColor = "red";
}
// 绑定图片事件
for (var i = 0; i < imgs.length; i++) {
// 闭包解决函数内部外部变量通用问题()(i)
(function(i) {
imgs[i].onmousemove = function() {
clearTimeout(timer)
left = -i * 1280
changeimg()
changeicon(i)
}
imgs[i].onmouseout = function() {
run()
}
})(i)
}
// 绑定圆点事件
for (var i = 0; i < icons.length; i++) {
// 闭包解决函数内部外部变量通用问题()(i)
(function(i) {
icons[i].onmousemove = function() {
clearTimeout(timer)
left = -i * 1280
changeimg()
changeicon(i)
}
icons[i].onmouseout = function() {
run()
}
})(i)
}
</script>

浙公网安备 33010602011771号