html css js 实现一个卡片式轮播图 ,要求轮播有动画过渡效果 ,图片移动过程中离开的图片逐渐变小,进入的图片逐渐变大
时间: 2024-11-25 13:08:53 浏览: 5
HTML、CSS和JavaScript可以结合起来创建一个卡片式的轮播图,带有动画过渡效果。这里是一个基本的步骤说明:
1. HTML结构:
```html
<div class="carousel-container">
<div class="carousel-item active">
<img src="image1.jpg" alt="Image 1">
</div>
<div class="carousel-item">
<img src="image2.jpg" alt="Image 2">
</div>
<!-- 添加更多图片... -->
</div>
```
2. CSS样式:
```css
.carousel-container {
position: relative;
width: 100%;
overflow: hidden;
}
.carousel-item {
position: absolute;
display: none;
transition: transform 0.5s ease-in-out;
}
.carousel-item.active {
display: block;
transform: translateX(0);
}
.carousel-item-entering,
.carousel-item-leaving {
opacity: 0;
transform: translateX(-100%);
}
```
3. JavaScript (jQuery简化版) 或者 Vanilla JS 动画:
```javascript
let slideIndex = 1;
const slides = document.querySelectorAll('.carousel-item');
function showSlides(n) {
let i;
const x = slides.length;
if (!n || n > x) {
n = 1;
}
for (i = 0; i < x; i++) {
slides[i].classList.remove('active', 'entering', 'leaving');
}
slides[slideIndex - 1].classList.add('leaving');
slides[n - 1].classList.add('active', 'entering');
slides.forEach((item, index) => {
if (index === n - 1) {
item.style.transform = 'translateX(0)';
} else {
item.style.transform = `translateX(${index == 0 ? '-100%' : '100%'});
}
});
// 更换索引,处理循环
slideIndex = (slideIndex + 1) % x;
}
// 配置初始显示
showSlides(slideIndex);
// 自动轮播,例如每秒切换一次
setInterval(showSlides, 3000);
```
当你滚动时,离开屏幕的图片会被添加 `.leaving` 类,逐渐缩小并移出画面;新的图片会添加 `.entering` 和 `.active` 类,逐渐放大并出现在屏幕上。
阅读全文