这几天一直有需要用到轮播图的需求。之前也没写过,索性自己写一个自己的轮播图轮子。
目前是实现了自动轮播,按左右箭头和序列点可以左右跳转和固定跳转图片。
感觉目前也没什么很缺的功能了,轮播图的要求大部分也就以上三点。
我的轮播图的实现思路是通过图片的显示隐藏配合图片的变换动画,我还有看到是通过调整图片条的显示范围来达到轮播图的效果和通过层级显示来达到相同效果的。
以下是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>轮播图轮子</title>
<script type="text/javascript" src="JS/jquery-3.4.1.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
.lunbo-body {
position: relative;
max-width: 80%;
height: 400px;
margin: 200px auto;
}
.lunbo-content {
position: relative;
width: 100%;
height: 100%;
}
.lunbo-content >img{
position: absolute;
display: none;
width: 100%;
height: 100%;
opacity: 1;
}
.lunbo-content .lunbo-content-img {
position: absolute;
display: block;
opacity: 1;
transition: 2S;
}
.lunbo-xulie {
position: absolute;
width: auto;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
text-align: center;
padding: 0 10px;
border: solid #FFF 1px;
border-radius: 20px;
}
li {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
border: solid #FFF 1px;
line-height: 8px;
}
.lunbo-xulie-son {
background-color: #FFF;
}
.button-left {
display: none;
position: absolute;
width: 50px;
height: 80px;
background-color: #EDEFF4;
left: 20px;
top: 50%;
transform: translateY(-50%);
text-align: center;
opacity: 0.3;
}
.button-right {
display: none;
position: absolute;
width: 50px;
height: 80px;
background-color: #EDEFF4;
right: 20px;
top: 50%;
transform: translateY(-50%);
text-align: center;
opacity: 0.3;
}
.button-left img{
position: absolute;
width: 20px;
height: 20px;
top: 50%;
transform: translateY(-50%);
}
.button-right img{
position: absolute;
width: 20px;
height: 20px;
top: 50%;
transform: translateY(-50%);
}
</style>
</head>
<body>
<div class="lunbo-body">
<div class="lunbo-content">
<img src="image/MIX1.jpg" alt="第一张图片" class="lunbo-content-img">
<img src="image/MIX2.jpg" alt="第二张图片">
<img src="image/MIX3.jpg" alt="第三张图片">
<img src="image/MIX4.jpg" alt="第四张图片">
<img src="image/MIX5.jpg" alt="第五张图片">
</div>
<ul class="lunbo-xulie">
<li class="lunbo-xulie-son"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div class="button-left"><img src="image/jiantou4.png"></div>
<div class="button-right"><img src="image/jiantou3.png"></div>
</div>
</body>
<script>
$(function () {
var img = $('.lunbo-content img');
var lis = $('.lunbo-xulie li');
var ismore = 0;
/*重置图片和序列的样式*/
function clearImg() {
for (var i = 0; i < img.length; i++) {
img.removeClass('lunbo-content-img');
lis.removeClass('lunbo-xulie-son');
}
img.eq(ismore).addClass('lunbo-content-img');
lis.eq(ismore).addClass('lunbo-xulie-son');
};
/*循环执行样式的重置和判断是否循环完所有样式*/
function doThing() {
ismore++;
if (ismore == img.length) {
ismore = 0;
}
clearImg();
};
/*定时器3S一次*/
var dingShiQi = setInterval(doThing, 2000);
/*鼠标移入时*/
$(".lunbo-body").mouseover(function () {
clearInterval(dingShiQi);
$('.button-left').css('display', 'block');
$('.button-right').css('display', 'block');
});
/*鼠标移除*/
$(".lunbo-body").mouseleave(function () {
dingShiQi = setInterval(doThing, 2000);
$('.button-left').css('display', 'none');
$('.button-right').css('display', 'none');
});
/*上一张图片*/
$('.button-left').on('click', function () {
ismore -= 1;
if (ismore <= -1) {
ismore = 4;
}
img.removeClass('lunbo-content-img');
lis.removeClass('lunbo-xulie-son');
img.eq(ismore).addClass('lunbo-content-img');
lis.eq(ismore).addClass('lunbo-xulie-son');
});
/*下一张图片*/
$('.button-right').on('click', function () {
ismore += 1;
if (ismore >= 5) {
ismore = 0;
}
img.removeClass('lunbo-content-img');
lis.removeClass('lunbo-xulie-son');
img.eq(ismore).addClass('lunbo-content-img');
lis.eq(ismore).addClass('lunbo-xulie-son');
});
/*用序列行控制图片*/
$("li").click(function () {
var sum = $(this).index();
img.removeClass('lunbo-content-img');
lis.removeClass('lunbo-xulie-son');
img.eq(sum).addClass('lunbo-content-img');
lis.eq(sum).addClass('lunbo-xulie-son');
});
});
</script>
</html>