【发布时间】:2017-10-16 23:55:13
【问题描述】:
如果您将鼠标缓慢悬停在元素上,动画将正常工作。绿色层从左侧重叠,然后从顶部开始,黄色层与绿色层重叠。当鼠标离开元素时,这种重叠应该会自行撤消,首先撤消黄色重叠,然后撤消绿色重叠。
但是如果光标悬停在它上面的速度太快,动画就会卡在黄色重叠处,直到你重新鼠标悬停然后鼠标移出。我尝试在每个.animate 方法之前添加.stop(false, true) jQuery 方法,这是我读到的解决了类似问题的方法,但这没有用。我通过在 .animate 函数之前链接它来尝试它,我尝试了它的几乎所有变体,在所有函数上,以及 .stop(true,true);。
如果鼠标悬停部分在光标离开元素之前没有完成,有没有办法阻止鼠标悬停部分触发?
$(document).ready(function() {
$('#con').hover(
function() { // handlerIn
$('#crossX').animate({'width': '115px'}, function() {
$('#crossY').animate({'height': '115px'})
})
},
function() { // handlerOut
$('#crossY').animate({'height': '15px'}, function() {
$('#crossX').animate({'width': '15px'})
})
}
)
});
#con {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 130px;
height: 130px;
overflow: hidden;
//background-color: black;
}
#one {
width: 100px;
height: 100px;
background-color: lightgrey;
color:black
}
#crossX {
position: absolute;
top: 15px;
left: 0px;
width: 15px;
height: 100px;
background-color: green;
color: yellow;
}
#crossY {
position: absolute;
top: 0px;
left: 15px;
width: 100px;
height: 15px;
background-color: yellow;
color: white;
}
#black {
position: absolute;
top: 0px;
left: 0px;
width: 100px;
height: 100px;
border: 15px solid black;
z-index: 10;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="con">
<div id="one"></div>
<div id="crossX"></div>
<div id="crossY"></div>
<div id="black"></div>
</div>
【问题讨论】:
标签: javascript jquery jquery-animate