我在整页上有一个垂直菜单。除最后一个菜单外,子菜单工作正常。我需要它在底部对齐,以便它不会超出页面。
我尝试使用:last-of-type
和:last-child
设置最后一个ul元素并用top: auto
覆盖该位置,但它影响了整个菜单。
我尝试在最后一个列表项中添加一个类,但它导致子菜单列表项重叠并将背景减半。
我的问题,具体来说是:如何将最后一个子菜单项与包含li的底部对齐,同时保持其他子菜单与顶部对齐?
这是我的代码:
* {
border: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
width: 100%;
font-family: 'Titillium Web', sans-serif;
font-size: 62.5%;
}
body {
font-size: 1.6rem;
}
.content {
width: 100%;
height: 100%;
background-color: #333;
z-index: 1;
}
nav {
width: 150px;
height: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
background-color: rgba(0, 0, 0, .25);
}
.nav ul {
*zoom: 1;
list-style: none;
margin: 0;
padding: 0px;
width: 100%;
-ms-flex: 0 100px;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
justify-content: space-between;
}
nav ul li {
background-color: rgba(102, 148, 137, 0.25);
border-radius: 3px;
width: 100%;
padding: 1.5rem 0;
}
nav ul li p {
width: 100%;
display: block;
/* display: none; to hide */
}
.nav ul:before,
.nav ul:after {
content: "";
}
.nav ul:after {
clear: both;
}
.nav ul>li {
position: relative;
}
.nav a {
text-decoration: none;
color: #eee;
}
.nav a:hover {
text-decoration: none;
background-color: rgba(102, 148, 137, 0.5);
}
.nav li ul {
background-color: rgba(0, 0, 0, .25);
}
.nav li ul li {
width: 100%;
padding: 0;
}
.nav li ul a {
display: block;
border: none;
width: 100%;
line-height: 2;
}
.nav li ul {
position: absolute;
left: 150px;
top: 0;
z-index: 1;
visibility: hidden;
opacity: 0;
filter: alpha(opacity=0);
-webkit-transition: 200ms ease;
-moz-transition: 200ms ease;
-o-transition: 200ms ease;
transition: 200ms ease;
}
.nav ul>li:hover ul {
visibility: visible;
opacity: 1;
filter: alpha(opacity=100);
}
<section class="content">
<nav class="nav">
<ul>
<li>
<a href="#">
<p>Home</p>
</a>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
</ul>
</nav>
</section>
答案 0 :(得分:1)
我希望我理解你..这可以吗?
.nav li:last-child ul {
bottom: 0;
top: initial;
}
* {
border: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
width: 100%;
font-family: 'Titillium Web', sans-serif;
font-size: 62.5%;
}
body {
font-size: 1.6rem;
}
.content {
width: 100%;
height: 100%;
background-color: #333;
z-index: 1;
}
nav {
width: 150px;
height: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
background-color: rgba(0, 0, 0, .25);
}
.nav ul {
*zoom: 1;
list-style: none;
margin: 0;
padding: 0px;
width: 100%;
-ms-flex: 0 100px;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
justify-content: space-between;
}
nav ul li {
background-color: rgba(102, 148, 137, 0.25);
border-radius: 3px;
width: 100%;
padding: 1.5rem 0;
}
nav ul li p {
width: 100%;
display: block;
/* display: none; to hide */
}
.nav ul:before,
.nav ul:after {
content: "";
}
.nav ul:after {
clear: both;
}
.nav ul>li {
position: relative;
}
.nav a {
text-decoration: none;
color: #eee;
}
.nav a:hover {
text-decoration: none;
background-color: rgba(102, 148, 137, 0.5);
}
.nav li ul {
background-color: rgba(0, 0, 0, .25);
}
.nav li ul li {
width: 100%;
padding: 0;
}
.nav li ul a {
display: block;
border: none;
width: 100%;
line-height: 2;
}
.nav li ul {
position: absolute;
left: 150px;
top: 0;
z-index: 1;
visibility: hidden;
opacity: 0;
filter: alpha(opacity=0);
-webkit-transition: 200ms ease;
-moz-transition: 200ms ease;
-o-transition: 200ms ease;
transition: 200ms ease;
}
.nav ul>li:hover ul {
visibility: visible;
opacity: 1;
filter: alpha(opacity=100);
}
.nav li:last-child ul {
bottom: 0;
top: initial;
}
<section class="content">
<nav class="nav">
<ul>
<li>
<a href="#">
<p>Home</p>
</a>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
</li>
<li>
<a href="#">
<p>Menu Item</p>
</a>
<ul>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
<li><a href="#">Subnav Item</a></li>
</ul>
</li>
</ul>
</nav>
</section>