为什么循环一圈之后图片卡在最后一张了 小圆点正常
来源:1-13 作业题
qq_浮巷旧人_0
2019-02-01 21:52:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery实现轮播图</title>
<link rel="stylesheet" href="css/lunbotu.css">
<script type="text/javascript" src="js/jquery-1.12.4.js"></script>
<script type="text/javascript" src="js/lunbotu.js"></script>
</head>
<body>
<div class="main">
<div class="banner">
<a href="">
<div class="banner-slide slide1 slide-active"></div>
</a>
<a href="">
<div class="banner-slide slide2"></div>
</a>
<a href="">
<div class="banner-slide slide3"></div>
</a>
<a href="">
<div class="banner-slide slide4"></div>
</a>
<a href="">
<div class="banner-slide slide5"></div>
</a>
</div>
<a href="javascript:;" class="button prev" id="prev"></a>
<a href="javascript:;" class="button next" id="next"></a>
<div class="dots" id="dots">
<span class="active"></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</body>
</html>
*{
padding: 0;
margin: 0;
}
.main{
width: 1200px;
height: 460px;
overflow: hidden;
margin: 30px auto;
position: relative;
}
.banner{
width: 1200px;
height: 460px;
overflow: hidden;
position: relative;
}
.banner-slide{
width: 1200px;
height: 460px;
background-repeat: no-repeat;
position: absolute;
display: none;
}
.slide-active {
display: block;
}
.slide1 {
background-image: url("../img/1.jpg");
}
.slide2 {
background-image: url("../img/2.jpg");
}
.slide3 {
background-image: url("../img/3.jpg");
}
.slide4 {
background-image: url("../img/4.jpg");
}
.slide5 {
background-image: url("../img/5.jpg");
}
.button.prev{
position: absolute;
width: 40px;
height: 80px;
left:0;
top: 50%;
margin-top: -40px;
background: url("../img/pre2.png") no-repeat center center;
}
.button.next{
position: absolute;
width: 40px;
height: 80px;
right:0;
top: 50%;
margin-top: -40px;
background: url("../img/pre.png") no-repeat center center;
}
.button:hover{
background-color: #333;
opacity: 0.8;
}
.dots{
position: absolute;
right: 20px;
bottom: 24px;
}
.dots span{
display: inline-block;
width: 12px;
height: 12px;
border-radius: 50%;
background: rgba(7,17,27,0.4);
box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset;
}
.dots span.active{
background: #fff;
box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset;
}
$(function () {
var index = 0,
timer = null,
main = $('.main'),
pics = $('.banner-slide'),
len = pics.length,
dots = $('.dots>span'),
prev = $('.prev'),
next = $('.next')
function changeImg() {
pics.eq(index).addClass('slide-active').siblings().removeClass('slide-active');
dots.eq(index).addClass('active').siblings().removeClass('active');
}
function slideimg() {
main.mouseover(function () {
stopplay()
}).mouseout(function () {
startplay()
})
}
slideimg()
function startplay() {
timer = setInterval(function () {
index++;
if (index >= len) index = 0;
changeImg()
}, 2000)
}
function stopplay() {
if (timer) clearInterval(timer)
}
main.mouseout();
})
4回答
好帮手慕星星
2019-02-03
这两个是一个事件,只不过开始把事件写在了slideimg函数里面,调用事件的时候写在了函数外面,所以需要先调用slideimg函数,调用里面的事件才能成功。
你还可以这样写:
好帮手慕星星
2019-02-03
老师明白同学的意思,上面解释的也是这个意思,mian.mouseout事件在slideimg函数中,需要先调用函数,再调用事件才能执行。
main.mouseout()如果只这样写,里面并没有调用自动轮播的方法startplay(),所以不会自动轮播。
好帮手慕星星
2019-02-03
因为mouseout事件在slideimg方法里面,所以需要先调用方法,才能调用里面的事件。
可以测试理解下。
好帮手慕星星
2019-02-02
你好,是图片关系没有找对,图片外层包裹着a标签,所以不能直接找同辈添加slide-active类:
应该先找到当前图片的父元素,然后找父元素的同辈,再找到子元素去除样式,如下:
自己测试下,祝学习愉快!
相似问题