图片轮播
图片轮播是网页中常见的动态展示组件,通过 jQuery 实现图片轮播可以加深对 DOM 操作、事件绑定与动画的理解。
实现功能
- 自动轮播
- 上一张 / 下一张 控制按钮
- 圆点导航切换
- 鼠标悬停暂停
jQuery 实现轮播基本结构
<div class="carousel">
<ul class="slides">
<li><img src="/images/banner1.jpg" /></li>
<li><img src="/images/banner2.jpg" /></li>
<li><img src="/images/banner3.jpg" /></li>
</ul>
<ol class="dots"></ol>
<div class="prev">‹</div>
<div class="next">›</div>
</div>
jQuery 轮播逻辑核心
$(function () {
let index = 0;
const $slides = $(".slides li");
const $dots = $(".dots");
const len = $slides.length;
// 生成圆点
for (let i = 0; i < len; i++) {
$dots.append(`<li class="${i === 0 ? "active" : ""}"></li>`);
}
function showSlide(i) {
$slides.eq(i).fadeIn().siblings().fadeOut();
$dots.find("li").eq(i).addClass("active").siblings().removeClass("active");
}
$(".next").click(function () {
index = (index + 1) % len;
showSlide(index);
});
$(".prev").click(function () {
index = (index - 1 + len) % len;
showSlide(index);
});
$dots.on("click", "li", function () {
index = $(this).index();
showSlide(index);
});
let timer = setInterval(() => $(".next").click(), 3000);
$(".carousel").hover(
() => clearInterval(timer),
() => (timer = setInterval(() => $(".next").click(), 3000))
);
});
基础样式建议(可根据需求优化)
.carousel {
position: relative;
width: 600px;
height: 300px;
overflow: hidden;
}
.slides {
list-style: none;
margin: 0;
padding: 0;
position: relative;
}
.slides li {
position: absolute;
top: 0;
left: 0;
display: none;
}
.slides li:first-child {
display: block;
}
.dots {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 5px;
}
.dots li {
width: 10px;
height: 10px;
border-radius: 50%;
background: #ccc;
cursor: pointer;
}
.dots li.active {
background: #333;
}
.prev,
.next {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(0, 0, 0, 0.5);
color: white;
padding: 5px 10px;
cursor: pointer;
}
.prev {
left: 10px;
}
.next {
right: 10px;
}
源码
<style>
.carousel {
position: relative;
width: 600px;
height: 300px;
overflow: hidden;
}
.slides {
list-style: none;
margin: 0;
padding: 0;
position: relative;
}
.slides li {
position: absolute;
top: 0;
left: 0;
display: none;
}
.slides li:first-child {
display: block;
}
.dots {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 5px;
}
.dots li {
width: 10px;
height: 10px;
border-radius: 50%;
background: #ccc;
cursor: pointer;
}
.dots li.active {
background: #333;
}
.prev,
.next {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(0, 0, 0, 0.5);
color: white;
padding: 5px 10px;
cursor: pointer;
}
.prev {
left: 10px;
}
.next {
right: 10px;
}
ol {
list-style: none;
}
</style>
<div class="carousel">
<ul class="slides">
<li><img src="https://cdn.pixabay.com/photo/2025/06/10/14/10/woman-9652287_640.jpg" /></li>
<li><img src="https://cdn.pixabay.com/photo/2025/06/10/13/54/woman-9652192_640.jpg" /></li>
<li><img src="https://cdn.pixabay.com/photo/2025/03/31/15/31/mountains-9504977_640.jpg" /></li>
</ul>
<ol class="dots"></ol>
<div class="prev">‹</div>
<div class="next">›</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function () {
let index = 0;
const $slides = $(".slides li");
const $dots = $(".dots");
const len = $slides.length;
// 生成圆点
for (let i = 0; i < len; i++) {
$dots.append(`<li class="${i === 0 ? "active" : ""}"></li>`);
}
function showSlide(i) {
$slides.eq(i).fadeIn().siblings().fadeOut();
$dots.find("li").eq(i).addClass("active").siblings().removeClass("active");
}
$(".next").click(function () {
index = (index + 1) % len;
showSlide(index);
});
$(".prev").click(function () {
index = (index - 1 + len) % len;
showSlide(index);
});
$dots.on("click", "li", function () {
index = $(this).index();
showSlide(index);
});
let timer = setInterval(() => $(".next").click(), 3000);
$(".carousel").hover(
() => clearInterval(timer),
() => (timer = setInterval(() => $(".next").click(), 3000))
);
});
</script>
相关内容
- 什么是 jQuery 了解什么是 jQuery,这款流行的 JavaScript 库如何简化网页的 DOM 操作、事件处理和 Ajax 调用,帮助前端开发者高效构建交互式网页,适合初...
- 引入方式 详细介绍 jQuery 的多种引入方式,包括通过 CDN 和本地下载的方式,帮助开发者快速搭建开发环境并优化网页加载性能,适合初学者和进阶用户参考学习。
- 基本语法 介绍 jQuery 的基本语法结构,包括选择器、事件绑定和链式调用,帮助初学者快速掌握如何用简洁代码操作 DOM,提高前端开发效率。
- 基础选择器 详细讲解 jQuery 的基础选择器用法,帮助开发者轻松选中 DOM 元素,掌握 ID、类名、标签选择器等常见选择技巧,提高网页操作效率。
- 层级选择器 介绍 jQuery 层级选择器的用法,包括子元素选择器、后代选择器、兄弟选择器等,帮助开发者精准定位复杂 DOM 结构中的元素,提升操作效率。
- 过滤选择器 介绍 jQuery 过滤选择器的使用方法,包括 :first、:last、:eq、:gt、:lt 等伪类选择器,帮助开发者精准筛选符合条件的元素,提高操作灵活性...