下拉菜单推家长菜单项
我有五个父菜单项,第三个有一个孩子下拉菜单。当你点击第三个父菜单时,下拉菜单出现,但它将第四个和第五个父母菜单项推到下面。我想让下拉菜单位于父菜单行的下面,而不需要推动任何父菜单项。这是一个Shopify网站。下拉菜单推家长菜单项
//Main nav expanders
$(document).on('click', '#navpanel .mainnav .title', function() {
$(this).parent().addClass('active').siblings().removeClass('active');
$(window).trigger('reup-navbar');
});
var navSpeed = 150;
$(document).on('click', '#navpanel .mainnav button', function() {
//Prep animation on sublist
if ($(this).parent().hasClass('expanded')) {
$(this).html('<span class="icon-plus"></span>');
$(this).siblings('ul').stop(true, true).css('display', 'block').slideUp(navSpeed, 'linear', function() {
$(this).parent().toggleClass('expanded');
$(window).trigger('reup-navbar');
});
} else {
$(this).html('<span class="icon-cross"></span>');
$(this).siblings('ul').stop(true, true).css('display', 'none').slideDown(navSpeed, 'linear', function() {
$(window).trigger('reup-navbar');
});
$(this).parent().toggleClass('expanded');
}
$(window).trigger('reup-navbar');
});
$(document).on('click', '#navpanel .mainnav a[href="#"]', function() {
$(this).siblings('button').trigger('click');
return false;
});
#navbar #navpanel .mainnav {
position: relative;
margin: 0 auto;
}
#navbar #navpanel .mainnav > ul > .active > ul {
display: block;
text-align: center;
}
#navbar #navpanel .mainnav li li {
position: relative;
display: inline;
text-align: center;
}
<div class="mainnav">
<ul class="tier1">
<li id="blog">blog</li>
<li class="">
<a class="tier1title" href="/collections/newarrivals">New Arrivals</a>
</li>
<li class="">
<a class="tier1title" href="/#">Categories</a>
<ul class="tier2">
<li class="">
<a href="/collections/knits">Knits</a>
</li>
<li class="">
<a href="/collections/tops">Tops</a>
</li>
<li class="">
<a href="/collections/dresses">Dresses</a>
</li>
<li class="">
<a href="/collections/bottoms">Bottoms</a>
</li>
. . .
<li class="">
<a class="tier1title" href="/collections/sale">Sale</a>
</li>
<li class="registerform">
...
</li>
</ul>
</div>
您需要在子菜单的position
设置为absolute
。此外,您需要将第一个<li>
显示屏更改为inline-block
而不是inline
。
CSS:
.mainnav {
position: relative;
margin: 0 auto;
}
.mainnav ul > li {
display: inline-block;
text-align: center;
}
.mainnav ul li:hover ul {
display:block;
background:red;
height:auto;
width:auto;
}
.mainnav ul li ul {
position: absolute;
display: none;
padding: 0;
margin: 0;
}
希望它能帮助。 Updated Fiddle ..
谢谢!为什么我需要将第一个li更改为inline-block? – 2014-10-12 15:28:20
当你只放入'inline'时,下一个元素将出现在它旁边。通过将其更改为'inline-block',它将在其旁边保留空格,这就是为什么下一个'ul'显示在'li'下面的原因。看看这个[链接](http://css-tricks.com/almanac/properties/d/display/)以获得更好的理解。 – 2014-10-12 15:53:22
非常感谢! – 2014-10-12 20:50:39
javascript代码在哪里? – 2014-10-11 23:43:11
@AlexChar已添加。感谢您看帖子。 – 2014-10-11 23:48:05
当发布问题时最好张贴小提琴来演示问题。这样更多的人会帮助你:) – 2014-10-12 00:11:38