子菜单未对齐css-html



我的子菜单有问题。发生的情况如下:

我的菜单有4个链接,其中一个链接显示了一个有3个链接的子菜单。现在发生的情况是,我的子菜单没有显示一个在另一个下面堆叠的链接,而是显示它们紧挨着。我希望子菜单链接是堆叠的。

@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@200&display=swap');

*{
box-sizing: border-box;
margin: 0;
padding: 0;
background-color: #FFFFFF;
}  
.header {
background-color: #F1F1F1;
text-align: center;
padding: 20px;
}        
li,a,button{
font-family: 'Nunito', sans-serif;
font-weight: 500;
font-size: 16px;
color:black;
text-decoration: none;
}        
header{
display: flex;
justify-content: space-between;
align-items: center;
padding: 30px 10%;
}        
.logo{
cursor: pointer;
}       
.nav_links{
list-style: none;
}        
.nav_links li{
display: inline-block;
padding: 0px 20px;
}        
.nav_links li a{
transition: all 0.3s ease 0s;
}
.nav_links li a:hover{
color: #0088a9;
}        
.nav_links li ul{
width: 200px;
text-align: center;
position: absolute;
background: #373C58;
padding: 0;
list-style-type: none;
box-shadow: 0px 0px 23px 0px rgba(0, 0, 0, 0.25);
margin-top: 10px;
border-radius: 7px;
display: none;
}        
.nav_links li ul li{
padding: .5rem;
}        
.nav_links li ul li a{
width: 100%;
height: 100%;
display: inline-block;
padding: 0;
margin: 0;
}        
.nav_links li ul li:hover{
background: #272B3F;
border-radius: 7px;
}        
.nav_links a:focus + ul,
.nav_links a:hover + ul,
.nav_links ul:hover{
display: block;
}        
button{
padding: 9px 25px;
background-color: rgba(0, 136, 169, 1.0);
border: none;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s ease 0s;
}        
button:hover{
background-color: rgba(0, 136, 169, 0.8);
}
<header>
<img class ="logo" src="icon.png" width="100" height="50" align="left">
<nav>
<ul class="nav_links">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li>
<a href="#">3</a>
<ul>
<li><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
<li><a href="#">4</a></li>
</ul>
</nav>
<a class="login" href="#"><button>Login</button></a>
</header>

也可在此小提琴中查看

由于设置了.nav_links li { display: inline-block },.nav中的所有li元素都将继承此属性。为了解决这个问题,你可以做两件事:

  1. 相反,将display: inline-block应用于所有.nav_links li,只需在它们之间添加一个V形,表示您只希望display: inline-block位于第一个元素组中。像这样:.nav_links > li { display: inline-block }

  2. 正如@yainspan所说,只需在.nav_links li ul licss选择器中包含属性display: block即可。

就我个人而言,为了节省搜索DOM树中每个元素的时间和精力,我更喜欢第一个。但这两种选择都很好。

最新更新