纯css制作轮播
纯CSS轮播实现方法
使用CSS的动画和关键帧技术可以实现简单的轮播效果,无需JavaScript。以下是两种常见实现方式:
方法一:使用CSS动画和关键帧
HTML结构:
<div class="slider">
<div class="slides">
<div class="slide">Slide 1</div>
<div class="slide">Slide 2</div>
<div class="slide">Slide 3</div>
</div>
</div>
CSS样式:
.slider {
width: 100%;
overflow: hidden;
}
.slides {
display: flex;
width: 300%; /* 3 slides */
animation: slide 10s infinite;
}
.slide {
width: 33.33%;
height: 300px;
}
@keyframes slide {
0% { transform: translateX(0); }
33% { transform: translateX(-33.33%); }
66% { transform: translateX(-66.66%); }
100% { transform: translateX(0); }
}
方法二:使用radio按钮控制
HTML结构:
<div class="slider">
<input type="radio" name="slider" id="slide1" checked>
<input type="radio" name="slider" id="slide2">
<input type="radio" name="slider" id="slide3">
<div class="slides">
<div class="slide">Slide 1</div>
<div class="slide">Slide 2</div>
<div class="slide">Slide 3</div>
</div>
<div class="controls">
<label for="slide1"></label>
<label for="slide2"></label>
<label for="slide3"></label>
</div>
</div>
CSS样式:

.slider {
position: relative;
width: 100%;
overflow: hidden;
}
.slides {
display: flex;
width: 300%;
transition: transform 0.5s ease;
}
.slide {
width: 33.33%;
}
#slide1:checked ~ .slides {
transform: translateX(0);
}
#slide2:checked ~ .slides {
transform: translateX(-33.33%);
}
#slide3:checked ~ .slides {
transform: translateX(-66.66%);
}
.controls {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
display: flex;
}
.controls label {
width: 15px;
height: 15px;
background: #ccc;
border-radius: 50%;
margin: 0 5px;
cursor: pointer;
}
input[type="radio"] {
display: none;
}
实现注意事项
- 动画方法适合自动轮播,radio方法适合手动控制
- 确保容器宽度与子元素宽度比例正确
- 过渡效果可以使用
transition或animation实现 - 响应式设计需要调整媒体查询中的宽度和动画参数
- 无限循环可以通过动画的
infinite属性或重新定位元素实现
高级技巧
- 使用
:target伪类实现基于URL hash的幻灯片切换 - 结合
calc()函数动态计算宽度 - 使用CSS变量简化样式维护
- 添加
@media查询实现响应式布局 - 使用
will-change属性优化性能





