前几天准备看看轮播图的时候找到了这个版本的轮播图 这个代码逻辑十分清晰,也很简单
我对代码进行了一丢丢加工,可以根据插入图片数量的多少进行增加元素节点
<!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>图片切换</title>
<style>
.picture {
position: relative;
width: 500px;
height: 333px;
margin: 0 auto;
border: 2px solid rgb(231, 127, 217);
overflow: hidden;
}
.radius {
/* 圆点所在的p (容器) */
width: 100%;
height: 10px;
position: absolute;
bottom: 30px;
text-align: center;
}
.pg {
position: absolute;
margin: 0;
width: 100%;
height: 20px;
background-color: rgba(0, 0, 0, .4);
text-align: center;
font-size: 16px;
font-weight: 600;
color: #fff;
}
img{
width: 500px;
height: 333px;
}
.title {
position: absolute;
width: 100%;
bottom: 0px;
text-align: center;
font-size: 16px;
font-weight: 600;
color: rgb(21, 223, 72);
}
span {
display: inline-block;
border: 10px solid #fdfdfd;
border-radius: 50%;
}
.active {
border: 10px solid #656466;
}
/* 左右箭头 */
.arrowhead-left,
.arrowhead-right {
position: absolute;
width: 41px;
height: 69px;
font-size: 30px;
line-height: 70px;
text-align: center;
color: #D6D8D4;
background-color: rgba(0, 0, 0, .3);
}
.arrowhead-left {
left: 0;
top: 40%;
}
.arrowhead-right {
right: 0;
top: 40%;
}
</style>
</head>
<body>
<div class="picture">
<!-- 图片页码 -->
<p class="pg">封面</p>
<img src="./images/4.jpg" alt="">
<!-- 小圆点点 -->
<p class="radius"></p>
<!-- 图片的下面标题 -->
<p class="title">图片1</p>
<!-- 左右箭头 -->
<div class="arrowhead-left" id="al">
< </div> <div class="arrowhead-right" id="ar"> >
</div>
</div>
<script>
let address = ["./images/1.jpg","./images/2.jpg","./images/3.jpg","./images/4.jpg","./images/1.jpg","./images/2.jpg","./images/3.jpg","./images/4.jpg","./images/5.jpg"];
let imgs = document.querySelector("img");
let len = address.length; //图片地址的数量为len
let str = "";
let pp = document.getElementsByTagName("p"); //获取的是p标签的集合
let al = document.getElementById("al");
let ar = document.getElementById("ar");
let n = 0;
//添加span标签(小圆点),个数为len个
for (let i = 0; i < len; i++) {
str += '<span></span>'
}
pp[1].innerHTML = str;
let spans = pp[1].getElementsByTagName('span'); //获取pp[1]里所有span标签
spans[0].className = 'active'; //给第一个span标签添加样式 active
for (let i = 0; i < len; i++) {
spans[i].index = i; //自定义索引值
spans[i].onmouseover = function () { //鼠标指向圆点时的事件
for (let i = 0; i < len; i++) {
spans[i].className = ""; //通过循环,清除所有圆点的类名
}
this.className = 'active'; //给鼠标移入的圆点添加类名
imgs.src = address[this.index];
pp[0].innerHTML = [this.index + 1] + `/${address.length}`;
pp[2].innerHTML = "图片" + [this.index + 1];
}
}
ar.onclick = function () { //右侧箭头,点击一次图片向右换一张
n++;
if (n > address.length - 1) {
n = 0;
}
for (let i = 0; i < len; i++) {
spans[i].className = "";
}
spans[n].className = "active";
imgs.src = address[n];
pp[0].innerHTML = (n + 1) + `/${address.length }`;
pp[2].innerHTML = "图片" + (n + 1);
}
al.onclick = function () { //左侧箭头,点击一次图片向左换一张
n--;
if (n < 0) {
n = (len - 1);
}
for (let i = 0; i < len; i++) {
spans[i].className = "";
}
spans[n].className = "active";
imgs.src = address[n];
pp[0].innerHTML = (n + 1) + `/${address.length}`;
pp[2].innerHTML = "图片" + (n + 1);
}
setInterval(ar.onclick, 1000); //添加定时器 setInterval(函数,间隔时间单位为毫秒)
//此次添加的函数为点击右侧箭头,间隔为3秒
</script>
</body>
</html>