幻灯片(通常称为轮播图或幻灯片展示)是一种常见的网页设计元素,用于以自动或手动方式展示一系列内容(如图片、文本等)。使用原生 JavaScript 实现幻灯片功能,可以让你在不依赖第三方库的情况下,自定义和控制幻灯片的行为。
幻灯片通常包括以下几个部分:
以下是一个简单的原生 JavaScript 实现自动播放幻灯片的示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>原生 JS 幻灯片示例</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.slideshow-container {
position: relative;
max-width: 800px;
margin: auto;
overflow: hidden;
}
.slide {
display: none;
width: 100%;
}
.slide img {
width: 100%;
}
.active {
display: block;
}
.indicators {
text-align: center;
margin-top: 10px;
}
.indicator {
display: inline-block;
height: 15px;
width: 15px;
margin: 0 5px;
background-color: #bbb;
border-radius: 50%;
cursor: pointer;
}
.indicator.active {
background-color: #717171;
}
</style>
</head>
<body>
<div class="slideshow-container">
<div class="slide active">
<img src="https://via.placeholder.com/800x400?text=幻灯片+1" alt="幻灯片 1">
</div>
<div class="slide">
<img src="https://via.placeholder.com/800x400?text=幻灯片+2" alt="幻灯片 2">
</div>
<div class="slide">
<img src="https://via.placeholder.com/800x400?text=幻灯片+3" alt="幻灯片 3">
</div>
</div>
<div class="indicators">
<span class="indicator active" data-slide="0"></span>
<span class="indicator" data-slide="1"></span>
<span class="indicator" data-slide="2"></span>
</div>
<script>
const slides = document.querySelectorAll('.slide');
const indicators = document.querySelectorAll('.indicator');
let currentIndex = 0;
const totalSlides = slides.length;
const slideDuration = 3000; // 每张幻灯片展示时间(毫秒)
function showSlide(index) {
slides.forEach((slide, i) => {
slide.classList.toggle('active', i === index);
indicators[i].classList.toggle('active', i === index);
});
currentIndex = index;
}
function nextSlide() {
let index = (currentIndex + 1) % totalSlides;
showSlide(index);
}
// 自动播放
setInterval(nextSlide, slideDuration);
// 点击指示器切换幻灯片
indicators.forEach(indicator => {
indicator.addEventListener('click', () => {
const index = parseInt(indicator.getAttribute('data-slide'));
showSlide(index);
});
});
</script>
</body>
</html>
.slideshow-container
:幻灯片容器,设置为相对定位并隐藏溢出内容。.slide
:每个幻灯片项,默认隐藏,通过添加 .active
类来显示。.indicators
和 .indicator
:用于显示当前幻灯片的指示器,用户可以点击切换。showSlide(index)
:显示指定索引的幻灯片,并更新指示器状态。nextSlide()
:切换到下一张幻灯片,循环展示。setInterval(nextSlide, slideDuration)
:设置自动播放的时间间隔。currentIndex
是否正确更新。showSlide
函数被正确调用。.active
类的样式是否正确应用。setInterval
是否被正确设置,没有被清除。transition
)平滑切换。transition
或 animation
为幻灯片切换添加动画效果。通过以上方法,你可以使用原生 JavaScript 实现一个功能完善且性能优化的幻灯片组件,根据具体需求进行进一步的定制和扩展。
腾讯云数智驱动中小企业转型升级·系列主题活动
Tencent Serverless Hours 第15期
第四期Techo TVP开发者峰会
第四期Techo TVP开发者峰会
云+社区沙龙online [新技术实践]
腾讯云数据湖专题直播
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
小程序·云开发官方直播课(数据库方向)
领取专属 10元无门槛券
手把手带您无忧上云