этот способ очень прост и эффективен.
var speed = 130; // milliseconds
$('.menu li').hover(function(e) {
$(this).find('div').slideDown(speed);
}, function(e) {
$(this).find('div').slideUp(speed);
});
Если вы хотите, чтобы он скользил вниз и одновременно, тогда вы можете использовать show()
и hide()
вместо этого, и он автоматически сделает это за вас.
Редактировать: Для вашего выпадающего элемента div попробуйте добавить margin-left, равный ширине изображения логотипа.
Edit 2: Осторожно, поместив div вне ul
, потому что теперь, когда вы пытаетесь навести курсор на div, он вызывает событие mouseleave (blur
) и заставляет div скользить вверх.
Попробуйте это обходной путь (или что-то в этом роде):
var divEntered = false, open, close;
var closeFunction = function() {
$('.sti-subitem').slideUp(150, function() {
// set closed flag
});
};
$('.sti-menu').hover(function() {
$('.sti-subitem').slideDown(200);
}, function() {
close = setTimeout(closeFunction, 600);
});
$('.sti-subitem').mouseenter(function() {
clearTimeout(close);
});
$('.sti-subitem').mouseleave(function() {
close = setTimeout(closeFunction, 600);
});