以下是使用 HTML、CSS 和 JavaScript 生成响应式轮播图的示例代码。
HTML:
<div class="slideshow-container">
<div class="slide">
<img src="image1.jpg">
</div>
<div class="slide">
<img src="image2.jpg">
</div>
<div class="slide">
<img src="image3.jpg">
</div>
<button class="prev">❮</button>
<button class="next">❯</button>
</div>
CSS:
/*轮播图容器 */
.slideshow-container {
max-width: 1000px;
position: relative;
margin: auto;
}
/* 默认情况下隐藏图片 */
.slide {
display: none;
}
/* 上一个和下一个按钮 */
.prev, .next {
cursor: pointer;
position: absolute;
top: 50%;
width: auto;
margin-top: -22px;
padding: 16px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.5s ease;
border-radius: 0 3px 3px 0;
}
/* 将“下一个按钮”放在右侧 */
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
/*悬停时,添加带有一点透视效果的黑色背景色 */
.prev:hover, .next:hover {
background-color: rgba(0,0,0,0.8);
}
.text {
color: #f2f2f2;
font-size: 15px;
padding: 8px 12px;
position: absolute;
bottom: 8px;
width: 100%;
text-align: center;
}
.numbertext {
color: #f2f2f2;
font-size: 12px;
padding: 8px 12px;
position: absolute;
top: 0;
}
.dot {
cursor: pointer;
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
}
.active, .dot:hover {
background-color: #717171;
}
.fade {
animation-name: fade;
animation-duration: 1.5s;
animation-fill-mode: both;
}
@keyframes fade {
from {
opacity: 0.4;
}
to {
opacity: 1;
}
}
JavaScript:
// 获取所有幻灯片
var slides = document.querySelectorAll('.slide');
// 获取上一个和下一个按钮
var prevButton = document.querySelector('.prev');
var nextButton = document.querySelector('.next');
var dots = document.querySelectorAll('.dot');
// 将当前幻灯片设置为第一张幻灯片
var currentSlide = 0;
// 显示第一张图片
slides[currentSlide].style.display = "block";
// 给按钮添加事件监听
prevButton.addEventListener('click', function(){
slides[currentSlide].style.display = "none";
currentSlide--;
if(currentSlide < 0)
currentSlide = slides.length - 1;
slides[currentSlide].style.display = "block";
});
nextButton.addEventListener('click', function(){
slides[currentSlide].style.display = "none";
currentSlide++;
if(currentSlide >= slides.length)
currentSlide = 0;
slides[currentSlide].style.display = "block";
});
dots.forEach(function(dot, index){
dot.addEventListener('click', function(){
slides[currentSlide].style.display = "none";
currentSlide = index;
slides[currentSlide].style.display = "block",
dots.forEach(function(dot){
dot.classList.remove('active');
});
dots[currentSlide].classList.add('active');
});
});