制作css轮播图
使用纯CSS制作轮播图
轮播图可以通过CSS的animation和@keyframes实现自动切换效果。以下是一个基础实现方案:
HTML结构
<div class="carousel">
<div class="carousel-inner">
<div class="carousel-item active">Slide 1</div>
<div class="carousel-item">Slide 2</div>
<div class="carousel-item">Slide 3</div>
</div>
</div>
CSS样式
.carousel {
width: 100%;
overflow: hidden;
position: relative;
}
.carousel-inner {
display: flex;
width: 300%; /* 根据幻灯片数量调整 */
animation: slide 9s infinite;
}
.carousel-item {
width: 33.333%; /* 100% / 幻灯片数量 */
padding: 20px;
text-align: center;
}
@keyframes slide {
0%, 33% { transform: translateX(0); }
33.33%, 66% { transform: translateX(-33.333%); }
66.66%, 100% { transform: translateX(-66.666%); }
}
添加导航指示器
可以通过伪元素或额外HTML元素创建导航点:
HTML添加
<div class="carousel-indicators">
<span class="indicator active"></span>
<span class="indicator"></span>
<span class="indicator"></span>
</div>
CSS样式
.carousel-indicators {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
}
.indicator {
display: inline-block;
width: 10px;
height: 10px;
margin: 0 5px;
border-radius: 50%;
background: rgba(255,255,255,0.5);
}
.indicator.active {
background: white;
animation: pulse 3s infinite;
}
@keyframes pulse {
0%, 33% { opacity: 1; }
33.33%, 100% { opacity: 0.5; }
}
响应式调整
通过媒体查询适应不同屏幕尺寸:
@media (max-width: 768px) {
.carousel-item {
padding: 10px;
font-size: 14px;
}
.carousel-indicators {
bottom: 5px;
}
.indicator {
width: 8px;
height: 8px;
}
}
悬停暂停功能
添加鼠标悬停时暂停动画的效果:

.carousel:hover .carousel-inner {
animation-play-state: paused;
}
.carousel:hover .indicator {
animation-play-state: paused;
}
注意事项
- 动画时间计算:总动画时间 = 每张幻灯片显示时间 × 幻灯片数量
- transform百分比值根据幻灯片数量等比例分配
- 确保
@keyframes中的百分比值与幻灯片切换时间匹配 - 对于更复杂效果,可以考虑使用CSS变量动态控制参数
这种方法无需JavaScript,适合简单展示场景。如需交互功能(如手动切换),建议结合JavaScript实现。






