老师,为什么我鼠标放在右下角的导航圆点和上一张下一张的按钮上时,banner图片依然在进行轮播
来源:1-13 作业题
ZIONT126
2018-09-27 01:57:06
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.main{
width: 1200px;
height: 460px;
border:5px solid #bbb;
margin: 0 auto;
position: relative;
}
/*--banner--*/
.banner{
width: 1200px;
height: 460px;
position: relative;
}
.sub-ban{
width: 1200px;
height: 460px;
position: absolute;
display: none;
}
.pic1{
background: url(../1.jpg) no-repeat ;
}
.pic2{
background: url(../2.jpg) no-repeat ;
}
.pic3{
background: url(../3.jpg) no-repeat ;
}
.pic4{
background: url(../4.jpg) no-repeat ;
}
.pic5{
background: url(../5.jpg) no-repeat ;
}
.ban-active{
display: block;
}
/*--button--*/
.button{
width: 30px;
height: 50px;
position: absolute;
top: 50%;
}
.button:hover{
background-color: #666;
opacity: 0.5;
}
.left{
background: url(../pre2.png) no-repeat center center;
margin-top: -25px;
}
.right{
background: url(../pre.png) no-repeat center center;
right: 0;
margin-top: -25px;
}
/*导航圆点*/
.dots{
width: 130px;
height: 25px;
position: absolute;
bottom: 10px;
right: 10px;
}
.sub-dot{
width: 10px;
height:10px;
border:3px solid #969696;
background-color: #fff;
border-radius: 50%;
float: left;
margin: 5px;
}
.dot-active{
border:3px solid #fff;
background-color: #969696;
}</style>
</head>
<body>
<div class="main">
<!-- 导航图 -->
<div class="banner">
<div class="sub-ban pic1 ban-active">1</div>
<div class="sub-ban pic2">2</div>
<div class="sub-ban pic3">3</div>
<div class="sub-ban pic4">4</div>
<div class="sub-ban pic5">5</div>
</div>
<!-- 左右箭头 -->
<div class="button left"></div>
<div class="button right"></div>
<!-- 导航圆点 -->
<div class="dots">
<span class="sub-dot dot-active"></span>
<span class="sub-dot"></span>
<span class="sub-dot"></span>
<span class="sub-dot"></span>
<span class="sub-dot"></span>
</div>
</div>
<!-- javaScript -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
<script>
$(function(){
var main=$('.main');
var banner=$('.banner');
var subBan=$('.sub-ban');
var dots=$('.dots');
var subDot=$('.sub-dot');
var left=$('.left');
var right=$('.right');
var timer;
var i=0;
var banLen=subBan.length;
// 鼠标移除图片开始轮播图片
banner.on('mouseleave',function(event){
timer=setInterval(function(){
i++;
if(i>=banLen){
i=0;
}
changeImg();
},2000)
}).trigger('mouseleave');//打开页面自动轮播图片
//鼠标在图片上停止轮播
banner.on('mouseenter',function(){
clearInterval(timer);
})
//点击圆点切换图片
subDot.on('click',function(event){
i=$(this).index();
changeImg();
})
//点击下一张按钮切换图片
right.on('click',function(){
i++;
if(i>=banLen){
i=0;
}
changeImg();
})
//点击上一张按钮切换图片
left.on('click',function(){
i--;
if(i<0){
i=banLen-1;
}
changeImg();
})
//切换图片
function changeImg(){
subBan.removeClass('ban-active');
subDot.removeClass('dot-active');
$(subBan.eq(i)).addClass('ban-active');
$(subDot.eq(i)).addClass('dot-active');
}
})
</script>
</body>
</html>老师,为什么我鼠标放在右下角的导航圆点和上一张下一张的按钮上时,banner图片依然在进行轮播,我只有在subDot.on(),left.on(),right.on() 里面加上clearInterval(timer);才能停止轮播,有什么好的方法让鼠标在这些导航按钮上可以停止banner图片轮播?
1回答
好帮手慕夭夭
2018-09-27
代码中把图片轮播停止的事件绑定在轮播区域整体的盒子上 , 即div.main:

把事件改为mouseover事件 , 因为不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件 ( mouseenter事件:只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。 ):

希望能够帮到你 , 祝学习愉快 , 望采纳
相似问题