HTML 部分:
创建了一个幻灯片容器 slider-container,里面包含了多个幻灯片 slide,每个幻灯片包含一张图片。
添加了上一张和下一张按钮 prev 和 next,用于手动切换幻灯片。
创建了一个指示器容器 dot-container,里面包含多个指示器点 dot,用于显示当前幻灯片的位置。
CSS 部分:
设置了幻灯片容器的样式,包括最大宽度、水平居中、隐藏超出内容等。
定义了幻灯片、图片、切换按钮和指示器点的样式。
为切换按钮和指示器点添加了鼠标悬停效果。

JavaScript 部分:
初始化幻灯片索引 slideIndex 为 1,并显示第一张幻灯片。
定义了 plusSlides 函数,用于切换幻灯片。
定义了 currentSlide 函数,用于显示指定的幻灯片。
定义了 showSlides 主函数,用于显示当前幻灯片,并更新指示器点的状态。
你可以将代码复制到一个 HTML 文件中,然后在浏览器中打开,就可以看到自适应的幻灯框效果。同时,你可以将图片链接替换为你自己的图片链接,以显示你想要的图片。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自适应幻灯框</title>
<style>
/* 幻灯片容器样式 */
.slider-container {
position: relative;
max-width: 1000px; /* 最大宽度 */
margin: auto; /* 水平居中 */
overflow: hidden; /* 隐藏超出容器的内容 */
}
/* 幻灯片样式 */
.slide {
display: none; /* 默认隐藏所有幻灯片 */
}
/* 幻灯片图片样式 */
.slide img {
width: 100%; /* 图片宽度自适应容器 */
height: auto; /* 高度自适应 */
}
/* 幻灯片切换按钮样式 */
.prev,
.next {
position: absolute;
top: 50%; /* 垂直居中 */
transform: translateY(-50%); /* 精确垂直居中 */
width: auto;
padding: 16px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
user-select: none;
cursor: pointer;
}
/* 下一张按钮靠右 */
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
/* 鼠标悬停在按钮上的样式 */
.prev:hover,
.next:hover {
background-color: rgba(0, 0, 0, 0.8);
}
/* 幻灯片指示器样式 */
.dot-container {
text-align: center;
margin-top: 10px;
}
/* 指示器点样式 */
.dot {
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
cursor: pointer;
}
/* 当前激活的指示器点样式 */
.active,
.dot:hover {
background-color: #717171;
}
</style>
</head>
<body>
<!-- 幻灯片容器 -->
<div>
<!-- 幻灯片 1 -->
<div>
<img src="https://bbs.cnzv.cc/up/upload/pic/12/20250306-df91c7bf3cfe2179f4428edd5c611e25.jpg" alt="Slide 1">
</div>
<!-- 幻灯片 2 -->
<div>
<img src="https://bbs.cnzv.cc/up/upload/pic/12/20250308-13f3d647f2d4044646d13bfd2c3d9790.jpg" alt="Slide 2">
</div>
<!-- 幻灯片 3 -->
<div>
<img src="https://bbs.cnzv.cc/up/upload/pic/12/20250302-e6e3198bde123ffa7d68659028cc95b0.jpg" alt="Slide 3">
</div>
<!-- 上一张按钮 -->
<a onclick="plusSlides(-1)">❮</a>
<!-- 下一张按钮 -->
<a onclick="plusSlides(1)">❯</a>
</div>
<!-- 幻灯片指示器容器 -->
<div>
<span onclick="currentSlide(1)"></span>
<span onclick="currentSlide(2)"></span>
<span onclick="currentSlide(3)"></span>
</div>
<script>
let slideIndex = 1; // 初始化幻灯片索引
showSlides(slideIndex); // 显示第一张幻灯片
// 切换幻灯片函数
function plusSlides(n) {
showSlides(slideIndex += n);
}
// 显示指定幻灯片函数
function currentSlide(n) {
showSlides(slideIndex = n);
}
// 显示幻灯片的主函数
function showSlides(n) {
let i;
let slides = document.getElementsByClassName("slide"); // 获取所有幻灯片元素
let dots = document.getElementsByClassName("dot"); // 获取所有指示器点元素
// 如果索引超出幻灯片数量,回到第一张
if (n > slides.length) {
slideIndex = 1;
}
// 如果索引小于 1,回到最后一张
if (n < 1) {
slideIndex = slides.length;
}
// 隐藏所有幻灯片
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
// 移除所有指示器点的激活状态
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
// 显示当前幻灯片
slides[slideIndex - 1].style.display = "block";
// 设置当前指示器点为激活状态
dots[slideIndex - 1].className += " active";
}
</script>
</body>
</html>



发表评论