纯div+css轮播图片切换到下一张
时间: 2023-09-04 15:02:50 浏览: 31
在纯div css中实现图片轮播切换到下一张,可以通过CSS动画和input标签中的radio和label标签的结合实现。
首先,需要创建一个包含轮播图片的父容器div。然后,在该div内部创建同样数量的子div,每个子div对应一张轮播图片。父容器div需要设置固定的宽度和高度,并且设置overflow属性为hidden,以及position属性为relative,用于限制子div的显示范围。
接下来,为每个切换按钮(或是图片下方的小圆点指示器等)创建一个input标签,并设置type属性为radio。每个input标签需要有一个唯一的id属性,例如"slide1"、"slide2"等。
在每个input标签后面,创建一个label标签,并设置for属性为对应的input标签的id,以及添加合适的样式和背景图片,用于切换按钮的显示效果。
然后,通过CSS选择器选中每个子div,并为其添加position属性为absolute,top和left属性设置为0,以及width属性设置为父容器div的宽度,用于设置子div的位置和宽度。
接着,使用CSS动画实现图片的切换效果。为每个子div添加动画效果,并设置动画的持续时间、延迟时间等参数。例如,可以通过设置transform属性的translateX属性值为负父容器div的宽度,实现图片从右向左的滑动效果。
最后,通过CSS选择器以及input标签的:checked状态选择器,选中当前被选中的input标签,再选择其相邻的子div,并为其添加合适的样式。
通过以上步骤,就可以在纯div css中实现图片轮播切换到下一张的效果了。当点击或选中下一张切换按钮时,通过选中的input标签的:checked状态选择器来改变相邻的子div的样式,从而显示切换到的下一张图片。
相关推荐


HTML和CSS实现轮播图的方法有很多种,以下是其中一种简单的实现方式:
HTML代码:
❮
❯
CSS代码:
.slideshow-container {
max-width: 800px;
position: relative;
margin: auto;
}
.slideshow {
display: flex;
overflow: hidden;
}
.slide {
flex: 1;
width: 0;
transition: all 1s ease;
}
.prev, .next {
position: absolute;
top: 50%;
width: auto;
margin-top: -22px;
padding: 16px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
user-select: none;
}
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
.prev:hover, .next:hover {
background-color: rgba(0,0,0,0.8);
}
JavaScript代码:
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("slide");
if (n > slides.length) {
slideIndex = 1;
}
if (n < 1) {
slideIndex = slides.length;
}
for (i = 0; i < slides.length; i++) {
slides[i].style.width = "0";
}
slides[slideIndex-1].style.width = "100%";
}
这个轮播图的实现方式是通过控制图片的宽度来实现的。CSS代码中的.slideshow类用于定义轮播图容器的样式,其中display属性被设置为flex以实现图片水平排列。slide类用于定义图片的样式,其中flex属性被设置为1以实现等分容器的效果。JavaScript代码中的plusSlides()函数和showSlides()函数分别用于切换图片和显示当前的图片。

以下是一个基于 HTML、CSS 和 JavaScript 的简单轮播图示例:
HTML 代码:
html
❮
❯
CSS 代码:
css
.slider-container {
position: relative;
width: 100%;
height: 400px;
overflow: hidden;
}
.slider {
position: absolute;
top: 0;
left: 0;
width: 300%;
height: 100%;
transition: transform 0.5s ease-in-out;
}
.slider img {
float: left;
width: 33.33333333%;
height: 100%;
}
.prev, .next {
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 30px;
font-weight: bold;
color: #fff;
cursor: pointer;
}
.prev {
left: 0;
}
.next {
right: 0;
}
JavaScript 代码:
javascript
var slideIndex = 1;
showSlide(slideIndex);
function changeSlide(n) {
showSlide(slideIndex += n);
}
function showSlide(n) {
var slides = document.getElementsByClassName("slider")[0].getElementsByTagName("img");
if (n > slides.length) {
slideIndex = 1;
}
if (n < 1) {
slideIndex = slides.length;
}
for (var i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[slideIndex-1].style.display = "block";
}
在示例中,轮播图被包裹在一个容器元素 .slider-container 中,其中 .slider 是包含了所有要轮播的图片的元素,.prev 和 .next 是分别代表向前和向后切换的按钮。CSS 中,.slider 使用了 position: absolute 和 width: 300% 来让里面的图片元素能够水平排列在一起,并且通过 transition 实现了切换时的动画效果。JavaScript 中,showSlide 函数实现了切换图片时的逻辑,changeSlide 函数则是在点击按钮时触发的切换事件。





以下是一个简单的 HTML 图片轮播的完整代码,使用纯 CSS 和 HTML 实现:
html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 图片轮播</title>
<style>
/* 设置图片容器的宽度和高度 */
.slideshow-container {
width: 500px;
height: 300px;
position: relative;
margin: auto;
}
/* 设置每张图片的样式 */
.mySlides {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
/* 设置“上一个”和“下一个”按钮的样式 */
.prev, .next {
position: absolute;
top: 50%;
font-size: 20px;
font-weight: bold;
padding: 16px;
margin-top: -22px;
border-radius: 0 3px 3px 0;
color: white;
background-color: rgba(0,0,0,0.8);
cursor: pointer;
}
/* 设置“下一个”按钮的位置 */
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
/* 当鼠标悬停在按钮上时,改变按钮的背景颜色 */
.prev:hover, .next:hover {
background-color: rgba(0,0,0,1);
}
/* 设置图片标题的样式 */
.caption {
position: absolute;
bottom: 0;
width: 100%;
text-align: center;
color: #f2f2f2;
background-color: rgba(0,0,0,0.8);
font-size: 18px;
padding: 8px;
}
/* 当鼠标悬停在图片上时,显示标题 */
.slideshow-container:hover .caption {
visibility: visible;
}
</style>
</head>
<body>
❮
❯
这是图片标题
<script>
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[slideIndex-1].style.display = "block";
}
</script>
</body>
</html>
以上代码会生成一个宽度为 500px、高度为 300px 的图片容器,其中包含三张图片和“上一个”、“下一个”按钮。当用户点击按钮时,JavaScript 代码会将当前显示的图片切换到上一张或下一张。同时,当鼠标悬停在图片上时,会显示图片的标题。







