⽤jQuery实现轮播图效果(⾃动播放,能⼿动切换)
⼤家好,今天我和⼤家分享⼀下轮播图的实现,下⾯是我做的轮播图效果
⾸先我们看到,它是由背景图⽚、⽅向图标和指⽰器组成。我们发现背景图⽚、⽅向图标和指⽰器是层叠在⼀起的,所以布局时我们要⽤绝对定位。我们要实现点击⽅向图标时,图⽚跟着变换;点击指⽰器
时,图⽚跟着变换;不点击时每隔5秒⾃动播放;不点击时不显⽰⽅向图标。
结构布局:⽤⼀个div包裹3个div,⾥⾯的3个div分别显⽰背景图⽚部分、⽅向图标部分和指⽰器部分。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="./css/lunbotu.css">
</head>
<body>
<!--整个轮播图部分-->
<div class="carousel">
<!--图⽚背景-->
<div class="content">
<ul>
<li><a href=""><img src="./img/dj.jpg" alt=""></a></li>
<li><a href=""><img src="./img/ali.jpg" alt=""></a></li>
<li><a href=""><img src="./img/al.jpg" alt=""></a></li>
<li><a href=""><img src="./img/hml.jpg" alt=""></a></li>
<li><a href=""><img src="./img/yao.jpg" alt=""></a></li>
<li><a href=""><img src="./img/xia.jpg" alt=""></a></li>
</ul>
</div>
<!--左移、右移图标-->
<div class="pos">
<a href="" class="left"><img src="./img/arrow-left.png" alt=""></a>
<a href="" class="right"><img src="./img/arrow-right.png" alt=""></a>
</div>
<!--指⽰器-->
<div class="dot">
<ul>
<li class="active"><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</div>
</div>
<script src="js/jquery-3.6.0.js"></script>
<script src="js/lunbotu.js"></script>
</body>
</html>
样式代码:⼤家可以⾃⼰设计⾃⼰喜欢的颜⾊和样式。注意要⽤绝对定位就要遵循⼦绝⽗相的原则。想让界⾯只显⽰⼀张图⽚可以⽤overflow: hidden;把超出部分隐藏,在⽤定位后可以设置top: 50%;transform: translateY(-50%);垂直居中 display: none;
/*去除标签⾃带的样式*/
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
a {
text-decoration: none;
}
img {
width: 100%;
}
}
/*设置整个轮播图的布局*/
.carousel {
position: relative;
margin: 40px auto;
width: 1000px;
height: 460px;
border: 1px solid rgba(0, 0, 0, 0.1);
box-sizing: border-box;
/*超出部分隐藏*/
overflow: hidden;
}
/*设置背景图⽚的布局*/
.content {
position: absolute;
z-index: 1;
}
/
*设置左移、右移图标和指⽰器的布局*/
.pos,
.dot {
position: absolute;
z-index: 2;
width: 100%;
}
/*设置左移、右移图标先垂直居中、不显⽰*/ .pos {
jquery翻书效果top: 50%;
transform: translateY(-50%);
display: none;
}
/*设置左移、右移图标的背景*/
.pos > a {
padding: 10px 0;
border-radius: 15px;
background: rgba(0, 0, 0, 0.5);
}
/*设置左移图标的位置*/
.left {
float: left;
}
/
*设置右移图标的位置*/
.right {
float: right;
}
/*设置指⽰器显⽰的位置*/
.dot {
bottom: 30px;
text-align: center;
}
/*设置指⽰器的背景*/
.dot ul {
display: inline-block;
padding: 2px;
background: rgba(0, 0, 0, .2);
border-radius: 15px;
}
/*设置圆点的⼤⼩*/
.dot > ul > li {
float: left;
margin: 5px;
width: 10px;
height: 10px;
border-radius: 50%;
background: white;
cursor: pointer;
cursor: pointer;
}
/*设置显⽰当前图⽚时指⽰器指⽰的位置*/
.active {
background: rgba(255, 255, 255, .6) !important;
}
JavaScript代码:注意开始先把图⽚隐藏,默认显⽰第⼀张图,不然不管你最先点击什么图⽚,它都是第⼆张图。显⽰下⼀张图⽚时,上⼀张图⽚和指⽰器的标记要清除
$(function () {
/*保存当前图⽚的索引*/
let index = 0;
let btn = false;
/*去除a标签⾃带的刷新*/
$('a[href=""]').prop('href', 'javascript:;');
/*开始先把图⽚隐藏,默认显⽰第⼀张图*/
$('.content>ul>li').hide();
$('.content>ul>li:eq(0)').show();
// 设置⽅向箭头图标的淡⼊、淡出
$('.carousel').hover(function () {
$('.pos').stop().fadeIn()
}, function () {
$('.pos').stop().fadeOut()
})
// 为左⽅向图标绑定点击事件
$('.left').on('click', function () {
btn = true;
clean();
if (index == 0) {
index = 5;
} else {
--index;
}
show();
})
// 为右⽅向图标绑定点击事件
$('.right').on('click', function () {
btn = true;
clean();
if (index == 5) {
index = 0;
} else {
++index;
}
show();
})
//指⽰器指⽰功能(为指⽰器绑定点击事件)
$('.dot li').on('click', function () {
btn = true;
let now = $(this).index()
if (now != index) {
clean();
index = now;
show();
}
})
//⾃动播放功能(定时器)
setInterval(function () {
if (!btn) {
clean();
if (index == 5) {
index = 0;
} else {
++index;
++index;
}
show();
} else {
btn = false;
}
}, 5000)
//清除上⼀张图⽚和指⽰器上的指⽰
function clean() {
$(`.content>ul>li:eq(${index})`).stop().fadeOut(); $(`.dot>ul>li:eq(${index})`).removeClass('active'); }
//添加新的图⽚和指⽰器上的指⽰
function show() {
console.log(index);
$(`.content>ul>li:eq(${index})`).stop().fadeIn(); console.log($(`.content>ul>li:eq(${index})`))
$(`.dot>ul>li:eq(${index})`).addClass('active');
}
})
结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论