Используя slideup, сдвиньте вниз эффекты jquery для выпадающего меню
У меня есть выпадающее меню, которое работает нормально, но я хочу добавить некоторые эффекты jquery, такие как анимация, скольжение, вниз,
в настоящее время я использую видимость скрытый и видимый, чтобы показать ul, как я могу использовать другой эффект на нем, ниже приведен код:
<script type="text/javascript">
$(document).ready(function () {
$('.ul-links > li').bind('mouseover', openSubMenu);
$('.ul-links > li').bind('mouseout', closeSubMenu);
function openSubMenu() {
$(this).find('ul').css('visibility', 'visible');
};
function closeSubMenu() {
$(this).find('ul').css('visibility', 'hidden');
}; });
</script>
Я пытался с помощью:$('ul', this).slideDown(100); $('ul', this).slideUp(100);
без успеха css:
.quiklinks .ul-links li ul
{
position:absolute;
visibility: hidden;
margin: 0px;
padding-top:0px;
z-index: 1000;
top: 42px;
left:0px;
}
Любая помощь будет высоко оценена
2 ответа
Вы можете использовать .animate()
функция, а не .css()
функция:
$(document).ready(function () {
$('.ul-links > li').bind('mouseover', openSubMenu);
$('.ul-links > li').bind('mouseout', closeSubMenu);
function openSubMenu() {
$(this).find('ul').animate({opacity : 1}, 500);
};
function closeSubMenu() {
$(this).find('ul').animate({opacity : 0}, 500);
};
});
Документация для .animate()
можно найти здесь: http://api.jquery.com/animate/
Также есть несколько готовых анимаций:
$(this).find('ul').slideToggle(500);//http://api.jquery.com/slidetoggle/
$(this).find('ul').fadeToggle(500);//http://api.jquery.com/fadetoggle/
Вот jsfiddle для использования .slideToggle()
а также .fadeToggle()
: http://jsfiddle.net/jasper/wFrpe/
Ты можешь использовать .slideToggle()
или же .fadeToggle()
, Дополнительные эффекты могут быть достигнуты путем объединения нескольких из этих функций, или вы можете использовать плагин анимации jQuery для дополнительных эффектов.
Я также упростил привязку вашего события с помощью .hover()
<script type="text/javascript">
$(document).ready(function () {
$('.ul-links > li').hover(toggleMenu, toggleMenu);
function toggleMenu() {
$(this).find('ul').stop(true, true).slideToggle();
}
});
</script>
Я заметил, что вы также используете visibility:hidden;
в вашей таблице стилей. Вы должны удалить это, так как это противоречит тому, как jQuery использует стиль отображения, чтобы изменить видимость элемента.
Вы можете сделать это, вызвав hide() вместо этого:
$('.ul-links > li').hide().hover(toggleMenu, toggleMenu);
Бонусный совет:
При использовании анимации всегда включайте .stop(true, true)
перед ними, в противном случае у вас будут причуды, если пользователь будет взаимодействовать с ним много раз до завершения предыдущей анимации.