- UID
- 4517
- 注册
- 2024/05/08
- 消息
- 33
- 黄金
- 493G
- 中国
- 福建
- 莆田市 网友
- #1
标准非常明显,同时 圆点导航数量是根据添加图片的数量来决定的
演示站点 每天BBS
注意:xxx.css和xxx.js要根据实际情况来调整CSS和JS的外部链接
演示站点 每天BBS
注意:xxx.css和xxx.js要根据实际情况来调整CSS和JS的外部链接
HTML:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <!-- 引入 jQuery 库 -->
<link rel="stylesheet" type="text/css" href="xxx.css">
</head>
<body>
<div class="carousel-container">
<div class="carousel-slide">
<!-- 添加图片 -->
<img src="xxx.jpg">
<img src="xxx.jpg">
<img src="xxx.jpg">
<img src="xxx.jpg">
</div>
<!-- 前后按钮 -->
<button class="prev">❮</button>
<button class="next">❯</button>
<!-- 圆点导航 -->
<div class="dots"></div>
</div>
<script src="xxx.js"></script>
</body>
</html>
CSS:
.carousel-container {
position: relative;
width: 100%;
max-width: 1000px; /* 容器最大宽度 */
height: 300px; /* 容器初始高度,可根据需求调整 */
margin: auto;
overflow: hidden;
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
background-color: #000; /* 容器背景色 */
border-radius: 20px; /* 设置圆角 */
}
.carousel-slide {
display: flex;
transition: transform 0.5s ease;
width: 100%;
position: relative;
}
.carousel-slide img {
width: 100%; /* 保证图片宽度始终为容器宽度 */
height: 100%; /* 保证图片高度始终为容器高度 */
object-fit: cover; /* 使用 cover 保证图片始终填充容器 */
object-position: center; /* 保证图片在容器中垂直和水平居中 */
}
/* 按钮默认状态隐藏在容器的左右两侧 */
.prev, .next {
position: absolute;
top: 50%;
transform: translateY(-50%); /* 使按钮垂直居中 */
background-color: rgba(0, 0, 0, 0.5);
color: white;
border: none;
width: 50px;
height: 50px;
cursor: pointer;
border-radius: 50%;
transition: transform 0.3s ease; /* 添加丝滑过渡效果 */
z-index: 10;
}
.prev {
left: 10px; /* 按钮初始位置固定在容器左侧 */
transform: translateY(-50%) translateX(-100px); /* 初始时隐藏在左侧外部 */
}
.next {
right: 10px; /* 按钮初始位置固定在容器右侧 */
transform: translateY(-50%) translateX(100px); /* 初始时隐藏在右侧外部 */
}
/* 鼠标悬停时按钮滑入 */
.carousel-container:hover .prev {
transform: translateY(-50%) translateX(0); /* 左侧按钮滑入 */
}
.carousel-container:hover .next {
transform: translateY(-50%) translateX(0); /* 右侧按钮滑入 */
}
/* 圆点导航 */
.dots {
text-align: center;
padding: 10px;
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
z-index: 10;
display: flex;
}
.dot {
height: 15px;
width: 15px;
margin: 0 5px;
background-color: #fff; /* 圆点默认颜色为白色 */
border-radius: 50%;
cursor: pointer;
transition: background-color 0.5s ease;
}
.dot.active {
background-color: rgb(33, 117, 243); /* 选中后的颜色为亮蓝色 */
}
JavaScript:
$(document).ready(function() {
var currentIndex = 0;
var images = $('.carousel-slide img');
var totalImages = images.length;
var autoPlay;
var dotsContainer = $('.dots');
// 动态生成圆点导航
for (var i = 0; i < totalImages; i++) {
var dot = $('<span class="dot"></span>');
if (i === 0) {
dot.addClass('active');
}
dotsContainer.append(dot);
}
var dots = $('.dot');
function showImage(index) {
var offset = -index * 100;
$('.carousel-slide').css('transform', 'translateX(' + offset + '%)');
dots.removeClass('active');
dots.eq(index).addClass('active');
}
function nextImage() {
currentIndex = (currentIndex + 1) % totalImages;
showImage(currentIndex);
}
function prevImage() {
currentIndex = (currentIndex - 1 + totalImages) % totalImages;
showImage(currentIndex);
}
function startAutoPlay() {
autoPlay = setInterval(nextImage, 3000);
}
function stopAutoPlay() {
clearInterval(autoPlay);
}
// 初始自动播放
startAutoPlay();
// 点击下一张
$('.next').click(function() {
stopAutoPlay();
nextImage();
startAutoPlay(); // 重启自动播放
});
// 点击上一张
$('.prev').click(function() {
stopAutoPlay();
prevImage();
startAutoPlay(); // 重启自动播放
});
// 点击圆点切换图片
dots.click(function() {
stopAutoPlay();
currentIndex = $(this).index();
showImage(currentIndex);
startAutoPlay(); // 重启自动播放
});
});
最后编辑:
打赏用户
