У меня есть следующий код для скользящего меню:
jQuery(window).ready(function(){
jQuery('.menu>li').hover(function(){
jQuery(this).find('ul').first().stop(true,true).slideDown(400);
},
function(){
jQuery(this).find('ul').first().stop(true,true).slideUp();
});
jQuery('.menu>li>ul>li').hover(function(){
jQuery(this).find('ul').first().stop(true,true).slideDown(400);
},
function(){
jQuery(this).find('ul').first().stop(true,true).slideUp();
});
});
Он работает плавно, за исключением случаев, когда отображается .menu ul ul, он скользит на один уровень вниз от своего родительского элемента, поэтому на него нельзя навести курсор. Я исправил это, используя отрицательное значение margin-top для .menu ul ul, но таким образом функция slideDown выглядит так, как будто она скользит с середины вверх и вниз, а не сверху вниз. Любые предложения о том, как исправить это через jQuery или CSS?
Вот файл CSS:
.menu {
padding:0;
margin: 0;
}
.menu ul{
list-style: none;
margin: 0;
padding: 0;
}
.menu li{ /*these will be main menu items*/
list-style: none;
float: left;
line-height: 37px;
font-family: Arial;
font-size: 13px;
margin: 0;
padding: 0;
}
.menu li ul { /*first drop-down*/
left: -999em;
position: absolute;
width: 186px;
z-index: 500;
background: #666666;
display: none;
}
.menu li:hover ul {
left: auto;
}
.menu li ul ul {
margin-left: 186px;
display: none;
}
.menu li ul li {
text-align: left;
width: 186px;
}
.menu a {
display: block;
font-weight: bold;
text-decoration: none;
color: #fff;
margin: 0;
padding-left: 30px;
padding-right: 30px;
}
.menu li.active a {
background: #454545;
}
.menu a:hover{
color: #FBF4B6;
background: #333;
}
.menu li ul li a {
padding-left: 30px;
padding-bottom:2px;
padding-top:2px;
border-bottom: 1px solid #999;
}
.menu li.active ul li a:hover {
background: #333;
}