用html,js,css,写一个轮播图片框架,也可手动切换
时间: 2024-02-29 19:52:19 浏览: 91
好的,以下是一个简单的轮播图片框架,支持自动轮播和手动切换:
HTML代码:
```
<div class="slider">
<div class="slider-wrapper">
<img src="image1.jpg" alt="image1">
<img src="image2.jpg" alt="image2">
<img src="image3.jpg" alt="image3">
</div>
<div class="slider-controls">
<button class="prev-btn">‹</button>
<button class="next-btn">›</button>
</div>
</div>
```
CSS代码:
```
.slider {
position: relative;
width: 100%;
height: 400px;
overflow: hidden;
}
.slider-wrapper {
position: absolute;
top: 0;
left: 0;
width: 300%;
height: 100%;
display: flex;
transition: transform 0.5s ease-in-out;
}
.slider-wrapper img {
width: 33.33%;
height: 100%;
object-fit: cover;
}
.slider-controls {
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
}
.prev-btn,
.next-btn {
background-color: rgba(255, 255, 255, 0.5);
border: none;
color: #000;
font-size: 20px;
padding: 10px 20px;
margin: 0 10px;
cursor: pointer;
}
.prev-btn:hover,
.next-btn:hover {
background-color: rgba(255, 255, 255, 0.8);
}
```
JS代码:
```
let currentSlide = 0;
const slides = document.querySelectorAll('.slider-wrapper img');
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');
const slideWidth = slides[0].clientWidth;
// 自动轮播
setInterval(() => {
currentSlide++;
if (currentSlide >= slides.length) {
currentSlide = 0;
}
goToSlide(currentSlide);
}, 3000);
// 手动切换
prevBtn.addEventListener('click', () => {
currentSlide--;
if (currentSlide < 0) {
currentSlide = slides.length - 1;
}
goToSlide(currentSlide);
});
nextBtn.addEventListener('click', () => {
currentSlide++;
if (currentSlide >= slides.length) {
currentSlide = 0;
}
goToSlide(currentSlide);
});
function goToSlide(slideIndex) {
const slideOffset = slideIndex * -slideWidth;
document.querySelector('.slider-wrapper').style.transform = `translateX(${slideOffset}px)`;
}
```
说明:
1. HTML代码中,`.slider`是轮播框架的外层容器,包括`.slider-wrapper`(图片容器)和`.slider-controls`(切换按钮容器)两个子元素。
2. CSS代码中,`.slider`设置了轮播框架的基本样式,包括宽高、溢出隐藏等;`.slider-wrapper`设置了图片容器的样式,包括绝对定位、宽高、flex布局和动画过渡等;`.slider-wrapper img`设置了每张图片的样式,包括宽高和图片填充方式等;`.slider-controls`设置了切换按钮容器的样式,包括绝对定位、水平居中等;`.prev-btn`和`.next-btn`设置了切换按钮的样式,包括背景色、边框、字体大小等。
3. JS代码中,首先获取轮播框架中的图片元素和切换按钮元素,以及每张图片的宽度;然后设置自动轮播的定时器,每隔3秒切换到下一张图片;同时,监听切换按钮的点击事件,分别切换到前一张和后一张图片;最后,定义`goToSlide()`函数,根据当前图片编号计算并设置图片容器的偏移量,实现图片切换。
这样,一个简单的轮播图片框架就完成了。
阅读全文