如何展开绝对定位列表



是否可以告诉一个绝对定位的列表项向下推下一个列表项?https://jsfiddle.net/230cfs4g/在本例中,子菜单下的列表项与其下的链接重叠

我的目标是让它按下下面的其他链接,类似于移动版本(包括在内(的功能,同时仍然保持悬停在桌面菜单中的内容方面。。

<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Raleway&display=swap" rel="stylesheet">
<nav>
<div class="nav-menu">
<div class="menu-navmenu-container">
<ul id="menu-navmenu" class="menu">
<li id="menu-item-3499" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3499"><a href="=">Home</a></li>
<li id="menu-item-3855" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3855 menu-item-with-children">
<a>Services</a>
<ul class="sub-menu">
<li id="menu-item-4498" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4498 menu-item-with-children">
<a href="">SubMenu</a>
<ul class="sub-menu">
<li id="menu-item-3664" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3664"><a href="=">Link</a></li>
<li id="menu-item-4339" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4339 menu-item-with-children">
<a href="=">Link</a>
<ul class="sub-menu">
<li id="menu-item-3497" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3497"><a href="=">Link</a></li>
</ul>
</li>
</ul>
</li>
<li id="menu-item-3529" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3529"><a href="=">Link</a></li>
<li id="menu-item-4219" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4219"><a href="=">Link</a></li>
<li id="menu-item-3585" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3585"><a href="=">Link</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
body {
background-color: #191919;}
a {
font-family: 'Raleway', sans-serif;
}
p {color: #fff;}
.menu-item-with-children > a::after {
font-family: "Font Awesome 5 Free";
font-size: 15px;
line-height: 16px;
font-weight: 900;
content: "f078";
padding-left: 5px;
}
.sub-menu  {
display: none;
}
.active {display: block;}

.menu {
background-color: white;
white-space:nowrap;
margin: auto;
width: 100%;

}
.menu-item {
}
.menu-item a {
color: #666;
padding: 5px;
font-size: 24px;
font-weight: 500;
text-decoration: none;

}
.menu li {
list-style-type: none;
}
.menu-item a:hover {
color: #007bff;
background-color: #cfe6ff;
}
.sub-menu {

padding-left: 20px;
}
.menu li a {
display: block;
}
.sub-menu li a {
font-size: 20px;
padding: 5px;
}
.menu-item-with-children .active {
font-weight: bold;
}
.menu {background-color: #fff;}
.sub-menu.active {
background-color: #fff;
}
.menu-item-with-children .active  li {
border-left: 2px solid #c9c9c9;
padding-left: 20px;
}
/*Desktop */
@media all and (min-width: 960px) {
.menu {
display: flex;
margin-top: 6px;
}

.menu-item {
width: auto;
}
.menu-item a {
font-size: 24px ;
padding: 5px 25px 0 25px;
}

.sub-menu {
position: fixed;
padding: 0;
min-width: 200px;
}

/*Trying to figure out how to get the list items to push the content down*/```

我认为在这种情况下不应该绝对定位它。请看这个请求。

jQuery('.menu-item').each(function() {
let _this = jQuery(this);
if (_this.children('ul').length) {
_this.addClass('menu-item-with-children');
}
});
jQuery('.menu').on('click', '.menu-item > a', function(e) {
e.preventDefault();
if (!jQuery(this).hasClass("active")) {
jQuery(this).addClass('active')
jQuery(this).next('ul').addClass('active')
jQuery(this).children().addClass('active')
jQuery(this).parent().addClass('active').siblings().find('.active').removeClass('active')
.parent().removeClass('active');
}
//Not sure why this works but what the hell.
else if (jQuery(this).removeClass('active')) {
jQuery(this).next('ul').removeClass('active')
jQuery(this).children().removeClass('active')
jQuery(this).parent().removeClass('active').children().find('.active').removeClass('active').siblings().find('.active').removeClass('active')
.parent().removeClass('active');
} else {

jQuery(this).parent().removeClass('active').siblings().find('.active').removeClass('active').children().find('.active').removeClass('active')
.parent().removeClass('active');
}

//Unused atm, may need lader
//else if (jQuery(this).removeClass('active')){
//jQuery(this).next('ul').removeClass('active')
//      jQuery(this).children().removeClass('active')
//jQuery(this).parent().removeClass('active').siblings().find('.active').removeClass('active')
//.parent().removeClass('active');
//     }

});
body {
background-color: #191919;
}
a {
font-family: 'Raleway', sans-serif;
}
p {
color: #fff;
}
.menu-item-with-children>a::after {
font-family: "Font Awesome 5 Free";
font-size: 15px;
line-height: 16px;
font-weight: 900;
content: "f078";
padding-left: 5px;
}
.sub-menu {
display: none;
}
.active {
display: block;
}
.menu {
background-color: white;
white-space: nowrap;
margin: auto;
width: 100%;
}
.menu-item {}
.menu-item a {
color: #666;
padding: 5px;
font-size: 24px;
font-weight: 500;
text-decoration: none;
}
.menu li {
list-style-type: none;
}
.menu-item a:hover {
color: #007bff;
background-color: #cfe6ff;
}
.sub-menu {
padding-left: 20px;
}
.menu li a {
display: block;
}
.sub-menu li a {
font-size: 20px;
padding: 5px;
}
.menu-item-with-children .active {
font-weight: bold;
}
.menu {
background-color: #fff;
}
.sub-menu.active {
background-color: #fff;
}
.menu-item-with-children .active li {
border-left: 2px solid #c9c9c9;
padding-left: 20px;
}

/*Desktop */
@media all and (min-width: 960px) {
.menu {
display: flex;
margin-top: 6px;
}
.menu-item {
width: auto;
}
.menu-item a {
font-size: 24px;
padding: 5px 25px 0 25px;
}
.sub-menu {
position: fixed;
padding: 0;
min-width: 200px;
}
/* Added this*/
.sub-menu.nested {
position: relative;
}
}

/*Trying to figure out how to get the list items to push the content down*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Raleway&display=swap" rel="stylesheet">
<nav>
<div class="nav-menu">
<div class="menu-navmenu-container">
<ul id="menu-navmenu" class="menu">
<li id="menu-item-3499" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3499"><a href="=">Home</a></li>
<li id="menu-item-3855" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3855 menu-item-with-children">
<a>Services</a>
<ul class="sub-menu">
<li id="menu-item-4498" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4498 menu-item-with-children">
<a href="">SubMenu</a>

<ul class="sub-menu nested">
<li id="menu-item-3664" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3664"><a href="=">Link</a></li>
<li id="menu-item-4339" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4339 menu-item-with-children">
<a href="=">Link</a>
<ul class="sub-menu">
<li id="menu-item-3497" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3497"><a href="=">Link</a></li>
</ul>
</li>
</ul>
</li>
<li id="menu-item-3529" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3529"><a href="=">Link</a></li>
<li id="menu-item-4219" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4219"><a href="=">Link</a></li>
<li id="menu-item-3585" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3585"><a href="=">Link</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<p>test</p>

.sub-menu * {position: static;}显然是我所有问题的答案。

最新更新