我試圖爲我的網站創建一個投資組合部分,當一個項目名稱被徘徊時淡出的背景圖像,當光標離開項目名稱時淡出。這工作正常,但是我面臨的問題是,當我從一個項目名稱快速懸停到另一個項目名稱時,'mouseenter'事件正在觸發,而'mouseleave'事件仍在運行,等待動畫完成。防止另一個正在運行的事件被執行
當'mouseleave'事件仍在運行時,是否有辦法阻止'mouseenter'事件被觸發?
我已經設置了一個codepen但它工作不正常,這是一個codepen限制?我的full code is available on Github(需要Jekyll和Gulp)。
這裏是我使用的代碼:
$('#barba__wrapper').on('mouseover', '.portfolio__link', function(event) {
var currentImage = $('.portfolio__image--current');
var portfolioImg = $(this).parent().data('img');
var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
currentImage.css('background-image', 'url('+ portfolioImg +')');
currentImage.addClass('animated fade-in').one(animationEnd, function() {
currentImage.removeClass('animated fade-in');
});
});
$('#barba__wrapper').on('mouseleave', '.portfolio__link', function(event) {
var currentImage = $('.portfolio__image--current');
var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
currentImage.addClass('animated fade-out').one(animationEnd, function() {
currentImage.css('background-image', '');
currentImage.removeClass('animated fade-out');
});
});
謝謝您的時間! :)
那麼你想緩衝和排隊的舉動?即使快速連續發生5次懸停,用戶將不得不等待界面趕上? – Wes
難道你不能只交換背景與CSS並擺脫所有的JavaScript,你似乎在使用CSS動畫嗎? – adeneo
另外,你應該使用'mouseenter',而不是'mouseover'。 – skobaljic