css轮播图
时间: 2025-08-27 10:51:41 AIGC 浏览: 7
CSS实现轮播图主要有利用`@keyframes`动画和`input`复选框结合`label`标签两种常见方法。
### 利用`@keyframes`动画实现轮播图
这种方法的核心思路是通过`@keyframes`定义动画,改变图片容器的`margin-left`属性来实现图片的切换。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
#container {
width: 400px;
height: 300px;
overflow: hidden;
}
#photo {
width: 1200px;
animation: switch 5s ease-out infinite;
}
#photo > img {
float: left;
width: 400px;
height: 300px;
}
@keyframes switch {
0%, 25% {
margin-left: 0;
}
35%, 60% {
margin-left: -400px;
}
70%, 100% {
margin-left: -800px;
}
}
</style>
</head>
<body>
<div id="container">
<div id="photo">
<img src="image1.jpg" alt="Image 1">
<img src="image2.jpg" alt="Image 2">
<img src="image3.jpg" alt="Image 3">
</div>
</div>
</body>
</html>
```
在上述代码中,`#container`作为图片的容器,设置了固定的宽度和高度,并将溢出部分隐藏。`#photo`包含所有图片,宽度为所有图片宽度之和,通过`@keyframes`定义的`switch`动画改变`margin-left`属性,实现图片的切换,动画会无限循环播放[^1]。
### 利用`input`复选框结合`label`标签实现轮播图
这种方法的核心思路是通过`input`复选框的选中状态来控制图片的显示和隐藏。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.slider {
width: 400px;
height: 300px;
position: relative;
overflow: hidden;
}
.slides {
width: 300%;
height: 100%;
display: flex;
}
.slides input {
display: none;
}
.slide {
width: 33.33%;
transition: 2s;
}
.slide img {
width: 400px;
height: 300px;
}
/* 导航栏 */
.navigation-manual {
position: absolute;
width: 400px;
margin-top: -20px;
display: flex;
justify-content: center;
}
.manual-btn {
border: 2px solid #40D3DC;
padding: 5px;
border-radius: 10px;
cursor: pointer;
transition: 1s;
}
.manual-btn:not(:last-child) {
margin-right: 40px;
}
.manual-btn:hover {
background: #40D3DC;
}
#radio1:checked~.first {
margin-left: 0;
}
#radio2:checked~.first {
margin-left: -33.33%;
}
#radio3:checked~.first {
margin-left: -66.66%;
}
/* 自动导航 */
.navigation-auto {
position: absolute;
display: flex;
width: 400px;
justify-content: center;
margin-top: 280px;
}
.navigation-auto div {
border: 2px solid #40D3DC;
padding: 5px;
border-radius: 10px;
transition: 1s;
}
.navigation-auto div:not(:last-child) {
margin-right: 40px;
}
#radio1:checked~.navigation-auto .auto-btn1 {
background: #40D3DC;
}
#radio2:checked~.navigation-auto .auto-btn2 {
background: #40D3DC;
}
#radio3:checked~.navigation-auto .auto-btn3 {
background: #40D3DC;
}
</style>
</head>
<body>
<div class="slider">
<div class="slides">
<!-- Radio buttons -->
<input type="radio" name="radio-btn" id="radio1">
<input type="radio" name="radio-btn" id="radio2">
<input type="radio" name="radio-btn" id="radio3">
<!-- Slide images -->
<div class="slide first">
<img src="image1.jpg" alt="Image 1">
</div>
<div class="slide">
<img src="image2.jpg" alt="Image 2">
</div>
<div class="slide">
<img src="image3.jpg" alt="Image 3">
</div>
<!-- Automatic navigation -->
<div class="navigation-auto">
<div class="auto-btn1"></div>
<div class="auto-btn2"></div>
<div class="auto-btn3"></div>
</div>
</div>
<!-- Manual navigation -->
<div class="navigation-manual">
<label for="radio1" class="manual-btn"></label>
<label for="radio2" class="manual-btn"></label>
<label for="radio3" class="manual-btn"></label>
</div>
</div>
</body>
</html>
```
在上述代码中,`.slider`作为图片的容器,设置了固定的宽度和高度,并将溢出部分隐藏。`.slides`包含所有图片,宽度为所有图片宽度之和,通过`input`复选框的选中状态来控制图片的显示和隐藏,同时通过`label`标签实现手动导航,点击`label`标签可以切换图片,还可以通过`input`复选框的选中状态控制自动导航的指示点的样式。
阅读全文
相关推荐















