提问人:VeroDet 提问时间:11/14/2023 最后编辑:j08691VeroDet 更新时间:11/14/2023 访问量:46
如何使用 CSS 定位下拉菜单?
How do I position a dropdown menu with CSS?
问:
我正在为一个班级创建一个模拟网站。我希望其中一个导航项有一个下拉菜单。但是,我遇到了下拉菜单的位置问题。
它的默认位置正对着导航项,但我希望两者之间只有一点空间。但是,当我将 margin-top 添加到下拉内容的容器时,下拉内容无法再滚动。我知道造成这种情况的原因 - 额外的空间阻止了内容的可滚动 - 但我不知道如何解决它。
.nav-items li {
list-style-type: none;
display: inline;
}
.dropdown li {
list-style-type: none;
display: block;
}
.services {
position: relative;
}
.services-list {
position: absolute;
display: none;
background-color: #f1f1ed;
border: 1px solid black;
top: 100%;
}
#services a {
text-decoration: none;
color: black;
}
#services:hover .services-list {
display: block;
position: absolute;
}
<ul class="nav-items">
<li>About</li>
<li id="services"><a href="#">Services</a>
<div class="services dropdown">
<ul class="services-list">
<li>Advocacy</li>
<li>Brochures</li>
<li>Speaker program</li>
<li>Helpline</li>
</ul>
</div>
</li>
<li>TransPages</li>
<li>Events</li>
<li>Our Supporters</li>
<li>Get Involved</li>
<li>Contact</li>
答:
2赞
user22379202
11/14/2023
#1
我希望这个更新的 css 能解决您的问题。我还注释掉了你不必要的风格。
* {
margin: 0;
padding: 0;
}
.nav-items {
display: flex;
justify-content: space-between;
padding: 2rem 4rem;
}
.nav-items li {
list-style-type: none;
/* display: inline; */
}
.dropdown li {
list-style-type: none;
/* display: block; */
}
.services {
position: relative;
}
.services-list {
position: absolute;
display: none;
background-color: #f1f1ed;
border: 1px solid black;
top: 100%;
}
.services-list li {
padding: 1rem;
}
#services a {
text-decoration: none;
color: black;
}
#services:hover .services-list {
display: block;
/* position: absolute; */
}
评论
0赞
VeroDet
11/14/2023
谢谢,这很好用!我遇到的问题是在列表项( <li id=“services”><a href=“#”>Services</a>)和下拉菜单之间添加一个空格。如果我在 .services-list 中添加边距,该列表突然不再可滚动。任何帮助/见解/指导将不胜感激。
0赞
11/14/2023
如果向 services-list 添加边距会产生问题,您可以将 services div 设置为弹性框并使用 gap 属性,我会在另一个答案中附加它的代码。另外,您能否介意通过单击该复选标记将我的答案标记为已接受:)
1赞
Girish Agarwal
11/14/2023
#2
您可以使用此 html 和 css
[HTML全文]
<ul class="nav-items">
<li>
<a href="#">About</a>
</li>
<li class="dropdown">
<a href="#">Services</a>
<ul class="dropdown-menu">
<li>Advocacy</li>
<li>Brochures</li>
<li>Speaker program</li>
<li>Helpline</li>
</ul>
</li>
<li>
<a href="#">TransPages</a>
</li>
<li>
<a href="#">Events</a>
</li>
<li>
<a href="#">Our Supporters</a>
</li>
<li>
<a href="#">Get Involved</a>
</li>
<li>
<a href="#">Contact</a>
</li>
</ul>
CSS的
.nav-items {
margin: 0;
list-style: none;
padding: 0;
}
.nav-items li {
position: relative;
display: inline-block;
padding: 5px 10px;
}
.nav-items li a {
text-decoration: none;
}
.nav-items > li .dropdown-menu {
position: absolute;
top: 100%;
left: 0;
margin: 0;
list-style: none;
padding: 5px 10px;
width: 150px;
border: 1px solid #2c2c2c;
border-radius: 2px;
display: none;
background-color: #f2f2f2;
}
.nav-items > li .dropdown-menu li {
width: 100%;
}
.nav-items > li:hover .dropdown-menu {
display: block
}
0赞
user22379202
11/14/2023
#3
下面是在列表项和下拉菜单之间留出一些空间的代码。
#services {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
评论