原生JS实现小米风格轮播图完整教程
作者:纸飞机时间:2026-10-23 22:02:02浏览:90
本文详细介绍如何使用原生JavaScript实现一个仿小米风格的轮播图组件。内容涵盖HTML结构搭建、CSS样式布局以及核心JS逻辑,包括自动轮播定时器、上一张/下一张按钮点击事件及底部小圆点导航切换功能。通过完整代码示例,帮助开发者掌握轮播图的核心实现原理与DOM操作方法。
原生JS轮播图实现概述
本文提供基于原生JavaScript编写的仿小米风格轮播图代码,该版本注重易读性与实用性,供广大开发者参考学习。
本示例主要实现以下交互功能:
- 支持图片自动循环播放。
- 提供“上一张”和“下一张”按钮,点击可手动切换图片。
- 支持点击底部导航小圆点,直接跳转到对应图片。
完整代码实现
具体实现代码分为HTML、CSS和JavaScript三个部分,如下所示。
HTML结构搭建
H5: 5
<div class="wrap">
<ul class="list">
<li class="item active"><img src="img/001.jpg" alt=""></li>
<li class="item"><img src="img/002.jpg"" alt=""></li>
<li class="item"><img src="img/001.jpg" alt=""></li>
<li class="item"><img src="img/002.jpg" alt=""></li>
<li class="item"><img src="img/001.jpg" alt=""></li>
</ul>
<!-- 小圆点 -->
<ul class="pointList">
<li class="point active" data-index="0"></li>
<li class="point" data-index="1"></li>
<li class="point"data-index="2"></li>
<li class="point"data-index="3"></li>
<li class="point"data-index="4"></li>
</ul>
<button type="button" class="btn" id="goPre"><</button>
<button type="button" class="btn" id="goNext">></button>
</div>
CSS样式设计
CSS样式部分:
<style>
.wrap {
width: 800px;
height: 400px;
position: relative;
}
.list {
width: 800px;
height: 400px;
list-style: none;
position: relative;
padding-left: 0px;
}
.item {
position: absolute;
width: 100%;
height: 100%;
color: white;
font-size: 50px;
opacity: 0.6;
transform: all .8s;
}
.item img{
width: 800px;
height: 400px;
}
.btn {
width: 50px;
height: 100px;
position: absolute;
top: 150px;
z-index: 100;
}
#goPre {
left: 0px;
}
#goNext {
right: 0px;
}
.item.active {
opacity: 1;
z-index: 10;
}
.pointList{
padding-left: 0;
list-style: none;
position: absolute;
right: 20px;
bottom: 20px;
z-index: 1000;
}
.point{
width: 10px;
height: 10px;
background-color: rgba(0,0,0,0.4);
border-radius: 50%;
float: left;
margin-right: 16px;
border-style: solid;
border-width: 2px;
border-color: rgba(255,255,255, 0.6);
cursor: pointer;
}
.point.active{
background-color: rgba(255,255,255,0.4);
}
</style>
JavaScript核心逻辑
JavaScript逻辑部分:
<script>
//获取节点
var items = document.getElementsByClassName('item')//图片
var goPreBtn = document.getElementById('goPre');
var goNextBtn = document.getElementById('goNext');
//获取点
var points=document.getElementsByClassName('point');
var time=0;//定时器图片跳转参数
var index = 0; //表示第几张图片在展示
//可以展示第几个点
var clearActive=function(){
for(var i=0;i<items.length;i++){
items[i].className='item';
points[i].className='point';
}
}
var goIndex=function(){
clearActive();
items[index].className='item active';
points[index].className='point active';
}
var goNext=function(){
if(index<4){
index++;
}else{
index=0;
}
goIndex();
}
var goPre=function(){
if(index==0){
index=4;
}else{
index--;
}
goIndex();
}
//点击下一张切换图片
goNextBtn.addEventListener('click' ,function(){
goNext();
time=0;
})
//点击上一张进行切换图片
goPreBtn.addEventListener('click' ,function(){
goPre();
time=0;
})
for(var i=0;i<points.length;i++){
points[i].addEventListener('click',function(){
var pointIndex=this.getAttribute('data-index');
index=pointIndex;
goIndex();
time=0;
})
}
//自动轮播定时器
setInterval(function(){
time++;
if(time==20){
goNext();
time=0;
}
},100)
</script>
以上即为本文的全部内容,希望这些代码能对各位的学习有所帮助,欢迎继续支持本站获取更多技术资源。
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
