У меня есть следующий живой пример в freakyleaf.co.uk/hoverfade/, который при наведении на плитку фоновое изображение плитки исчезает от 1 до 0,25 непрозрачности более 600 мс (.tile_img), затем текст исчезает от 0 до 1 непрозрачности 500 мс (.overlay). На выводе происходит обратное.jQuery hover mouseover/mouseout timing
Все это прекрасно работает, пока мышь уходит только после завершения анимации мыши. Если мышь уходим во время анимации мыши, изображение плитки исчезает до полной непрозрачности, но текст не исчезает, оставляя его видимым.
У меня есть следующий код:
$(document).ready(function(){
$(".tile").hoverIntent(function() {
$(".tile_img", this).animate({"opacity": "0.25"}, 600,
function() { $(this).next(".overlay").animate({"opacity": "1"}, 500); }
);
},
function() {
$(".overlay", this).animate({"opacity": "0"}, 500,
function() { $(this).prev(".tile_img").animate({"opacity": "1"}, 600); }
);
});
});
И HTML:
<div class="wrapper">
<ul id="service_boxes">
<li id="sb_recording" class="tile" onClick="location.href='recording.php';" style="cursor: pointer;">
<h2><a href="recording.php">Recording</a></h2>
<div class="tile_img"></div>
<div class="overlay"><p>Vintage analogue warmth and cutting-edge digital technology working in perfect harmony - That's the SoundARC sound!</p></div>
</li>
</ul>
</div>
Я понимаю, что, возможно, следует использовать функцию .stop но так попробовал его в нескольких местах, но только сломал код до сих пор.
Я даже не уверен, что то, что у меня есть, - лучший способ добиться того, чего я хочу; Я только дошел до этого только случайно, потому что я полный новичок.
Любая помощь была бы принята с благодарностью.
Большое спасибо.
Я думал, что решение вполне может включать 'setInterval', но было неуверено в том, как реализовать. Я бросил предложение вашего кода и, казалось, сломал событие mouseout, то есть анимация получила половину пути, а затем застряла, даже когда мышь оставила плитку ... –
Извините! Я допустил ошибку в своем коде. при выполнении анимации .overlay вы ссылаетесь на это, но я забыл, что это будет в рамках setInterval. Назначив переменную, скажем, self и присвоив ей значение этого, вы можете использовать ее в setInterval. Код работает на моем компьютере:) – jonepatr
Спасибо за ваш быстрый ответ ... Пробовал новый код, но у меня все еще возникает проблема: если мышь выйдет из плитки до того, как анимация mouseover закончится, div «overlay» не исчезнет ('.tile_img' однако) ...Любой свет, который вы могли бы пролить на это, был бы очень оценен! :) –