js实现带动画效果的html轮播图
时间: 2023-11-27 22:04:18 浏览: 37
好的,下面是一个使用 JavaScript 实现带动画效果的 HTML 轮播图:
HTML:
```html
<div class="slider">
<img class="slide active" src="image1.jpg">
<img class="slide" src="image2.jpg">
<img class="slide" src="image3.jpg">
<img class="slide" src="image4.jpg">
<div class="prev"></div>
<div class="next"></div>
</div>
```
CSS:
```css
.slider {
position: relative;
width: 100%;
height: 400px;
overflow: hidden;
}
.slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 1s ease-in-out;
}
.slide.active {
opacity: 1;
}
.prev, .next {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 30px;
height: 30px;
background-color: #000;
opacity: 0.5;
cursor: pointer;
}
.prev:hover, .next:hover {
opacity: 1;
}
.prev {
left: 20px;
}
.next {
right: 20px;
}
```
JavaScript:
```js
let slides = document.querySelectorAll('.slide');
let currentSlide = 0;
let slideInterval = setInterval(nextSlide, 3000);
function nextSlide() {
let prevSlide = currentSlide;
currentSlide = (currentSlide + 1) % slides.length;
slides[prevSlide].classList.remove('active');
slides[currentSlide].classList.add('active');
slides[currentSlide].style.animation = 'slideInRight 1s forwards';
slides[prevSlide].style.animation = 'slideOutLeft 1s forwards';
}
function prevSlide() {
let prevSlide = currentSlide;
currentSlide = (currentSlide - 1 + slides.length) % slides.length;
slides[prevSlide].classList.remove('active');
slides[currentSlide].classList.add('active');
slides[currentSlide].style.animation = 'slideInLeft 1s forwards';
slides[prevSlide].style.animation = 'slideOutRight 1s forwards';
}
let prevButton = document.querySelector('.prev');
let nextButton = document.querySelector('.next');
prevButton.addEventListener('click', prevSlide);
nextButton.addEventListener('click', nextSlide);
```
这个轮播图会在页面加载后每 3 秒自动切换一张图片,并且添加了向左和向右滑动的动画效果。您可以通过修改 CSS 样式或者 JavaScript 动画实现来调整轮播图的样式和效果。