图片轮播是Web开发中最常见的组件之一,这是一篇用原生JavaScript实现简单图片轮播的教程。
要实现图片轮播,首先我们要将图片轮播拆分为图片容器、图片、上一页按钮、下一页按钮、底部点选容器、底部点选按钮。
下面我们用HTML代码表示。
...
<div id="page">
<div id="ContainerWrap">
<div class="pre"><</div>
<div id="picContainer">
<img src="https://via.placeholder.com/500x250?text=1" alt="1">
<img src="https://via.placeholder.com/500x250/000000?text=2" alt="2">
<img src="https://via.placeholder.com/500x250/66ccff?text=3" alt="3">
<img src="https://via.placeholder.com/500x250/000000?text=4" alt="4">
<img src="https://via.placeholder.com/500x250/66ccff?text=5" alt="5">
</div>
<div id="dotContainer">
<div class="dot active"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
<div class="next">></div>
</div>
</div>
...
并为它添上样式。
* {
margin: 0;
padding: 0;
}
body {
text-align: center;
}
#page{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
#ContainerWrap {
width: 500px;
overflow: hidden;
margin: 0 auto;
}
#picContainer {
height: 250px;
width: 5000px;
border-radius: 5px;
}
#picContainer img {
border-radius: 5px;
float: left;
transition-property: position;
transition-duration: 1s;
}
.pre,.next {
position: absolute !important;
height: 60px;
width: 30px;
background: rgba(0, 0, 0, 0.5);
position: relative;
color: white;
line-height: 60px;
text-align: center;
z-index: 99999;
}
.pre {
left: 0px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
top: 100px;
}
.next {
right: 0px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
top: 100px;
}
#dotContainer {
position: relative;
top: -20px;
left: 350px;
z-index: 9999;
height: 10px;
width: 500px;
}
.dot {
background: rgba(255, 255, 255, 0.5);
width: 10px;
height: 10px;
border-radius: 10px;
float: left;
margin-left: 15px;
}
.dot.active {
background: blueviolet;
}
到目前为止,我们的轮播已经初具雏形了。但要让图片轮播能够使用,我们还要使用JavaScript和DOM来控制HTML元素的显示与隐藏。
首先我们要声明一个变量作为当前轮播页码,并在点击任一切换按钮时改变它。我们可以把图片容器作为一个对象,当点击切换按钮时改变它的水平偏移量。
点选按钮在HTML代码中重复出现了五次,我们也将每一个按钮作为一个对象,并将所有点选按钮的长度(即个数)存储起来。
var currentIndex = 0;
var position = document.getElementById('picContainer');
var dot=document.querySelectorAll('.dot');
var len=dot.length;
先将点选后执行的DOM操作写作一个函数。
function slide(index){
//移除所有选中状态
for(var i=0;i<len;i++){
dot[i].classList.remove("active");
}
//添加动态位移
position.style.transform="translateX(-"+(index)*500+"px)";
position.style.transitionDuration= "1s";
//添加当前索引选中状态
dot[index].classList.add("active");
//改变当前索引为传入的参数
currentIndex = index;
}
在HTML代码部分为上一页下一页添加点击事件,并为每个点选按钮添加点击事件为slide函数,并填上对应参数。
<div class="pre" onclick="prev()"><</div>
...
<div id="dotContainer">
<div class="dot active" onclick="slide(0)"></div>
<div class="dot" onclick="slide(1)"></div>
<div class="dot" onclick="slide(2)"></div>
<div class="dot" onclick="slide(3)"></div>
<div class="dot" onclick="slide(4)"></div>
</div>
...
<div class="pre" onclick="next()">></div>
上一页/下一页按钮与点选按钮的原理相同,都是改变位移,因此我们只需再次调用slide函数。
function next() {
if(currentIndex===len - 1){
slide(0);
return;
}
slide(currentIndex + 1);
}
function prev() {
if(currentIndex===0){
slide(len-1);
return;
}
slide(currentIndex-1);
}
当前页数索引(从0开始)是最后一个的时候,点击下一页返回到第一页,并改变索引为0,否则都切换到索引页的下一页。
当前页数索引是第一个的时候,点击上一页切换到最后一页,并改变索引为长度-1,否则都切换到索引页的上一页。
至此我们已经完全实现了一个简单的图片轮播具备的功能,感谢你的阅读。
标签:02,点选,轮播,DOM,一页,slide,2019,按钮,left From: https://www.cnblogs.com/sherryme/p/18578809