Проблема в том, что CSS портится из-за остановки в произвольных точках.
fadeIn()
, fadeOut()
, slideUp()
и slideDown()
переходят из текущего состояния в новое, а затем возвращаются к нему, а не к исходному CSS.
Вам необходимо вернуть CSS в рабочее состояние, чтобы продолжить после .stop (), или более четко указать цели анимации.
Как уже говорили другие, вы можете вернуть CSS в правильное положение, гарантируя, что когда вы остановите анимацию, она перейдет к ее концу, а не оставит все в произвольном состоянии.
UPDATE:
Посмотрите на код в этом обновлении вашей демонстрации: http://jsfiddle.net/hWTT6/5/
Возможно, это не совсем то, как вы хотите, чтобы оно выполнялось, но хитрость, если вы не хотите, чтобы анимация работала, - это вернуть анимацию в состояние, из которого она может продолжаться в пути. который вы желаете.
$(function() {
$('#fade')
.mouseenter(function() {
$('#fg_fade').stop().animate({ 'opacity': 0 }, 'slow', function() {
$('#fg_fade').css('height', '100%');
});
})
.mouseleave(function() {
$('#fg_fade').stop().animate({ 'opacity': 1, 'height': '100%' }, 'slow');
});
$('#slide_fire')
.mouseenter(function() {
$('#fg_fade').stop().animate({ 'height': 0 }, 'slow', function() {
$('#fg_fade').css('opacity', 1);
});
})
.mouseleave(function() {
$('#fg_fade').stop().animate({ 'height': '100%' }, 'slow', function() {
$('#fg_fade').css('opacity', 1);
});
});
});