如果將鼠標懸停在元素上,則動畫可以正常工作。綠色層從左側重疊,然後從頂部開始,黃色層與綠色層重疊。當鼠標離開元素時,該重疊應該自動撤消,從撤消黃色重疊和綠色重疊開始。快速懸停的jQuery動畫
但是,如果光標懸停在它上面太快,動畫會卡住黃色的重疊部分,直到重新拖動鼠標,然後彈出鼠標。我已經嘗試在每個.animate
方法之前添加.stop(false, true)
jQuery方法,這是我閱讀的方法可以解決類似問題,但這不起作用。我試圖在.animate
函數之前將它鏈接起來,我嘗試了所有函數的所有變體,以及.stop(true,true);
。
如果鼠標懸停部分在光標離開元素之前沒有完成,是否有辦法阻止mouseout部分發射?
$(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>
阿克塞爾,感謝您的回覆和解釋。您的解決方案使動畫更好,並解決了我所問的問題。我現在想知道是否有一種方法,當光標離開元素時,動畫可以從剩餘的位置撤回。 –
是的@DustinL_G,這應該是可能的。我推薦閱讀[我的這個答案](https://stackoverflow.com/a/45885132/3931192)以更好地理解JS或CSS的動畫。如果你喜歡,你可以在後續問題上給我打電話... – Axel