HTML/CSS 菜单样式栏布局不正确
HTML/CSS menu style bar doesn't layout properly
我在一个网站上工作,作为修订工具的一部分,但是我似乎无法让我的菜单布局正常运行,当我试图为同一个列表中的多个部分创建下拉菜单时,它们要么生成在彼此或布局到它们应该在的一侧,请注意,解决方案应该只使用 HTML 和 CSS.
为了澄清,下拉菜单应该出现在它们各自的下面 "title heading" 可以这么说。
#menu a:link {
color: #C7C1C1;
text-decoration: none;
}
#menu a:visited {
color: #C7C1C1;
text-decoration: none;
}
#menu a:hover {
color: #FFFFFF;
}
#menu {
text-align: center;
top: 0px;
position: absolute;
margin-bottom: -61px;
font-size: 20px;
}
#menu ul {} #menu ul li {
display: inline;
padding-left: 30px;
padding-right: 30px;
}
#menu ul li ul {
display: none;
}
#menu ul li:hover ul {
display: inline-block;
top: 50px;
left:
/*when applying this makes all dropdowns stack*/
;
position: absolute;
background-color: #4D4D4D;
text-align: center;
}
<div id="menu">
<div>
<ul>
<li><a href="#x">Introduction</a>
<ul>
<li><a href="#xxx">Past</a>
</li>
<li><a href="#xxx">Present</a>
</li>
<li><a href="#xxx">Future</a>
</li>
</ul>
</li>
<li><a href="#y">History</a>
<ul>
<li><a href="#yyy">Past</a>
</li>
<li><a href="#yyy">Present</a>
</li>
<li><a href="#yyy">Future</a>
</li>
</ul>
</li>
<li><a href="#z">National Flags</a>
<ul>
<li><a href="#zzz">Past</a>
</li>
<li><a href="#zzz">Present</a>
</li>
<li><a href="#zzz">Future</a>
</li>
</ul>
</li>
<li><a href="#a">International Maritime Signal Flags</a>
<ul>
<li><a href="#aaa">Past</a>
</li>
<li><a href="#aaa">Present</a>
</li>
<li><a href="#aaa">Future</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
将position: relative;
设置为<li>
#menu ul li{
display: inline;
padding-left: 30px;
padding-right: 30px;
position: relative; // add this
}
然后将left: 0;
位置设为<ul>
#menu ul li:hover ul{
display: inline-block;
top: 50px;
left: 0px; // Begin on the left of the li
position: absolute;
background-color: #4D4D4D;
text-align: center;
}
您需要将 position: relative;
添加到父元素以将子元素绝对定位到它:
#menu ul li{
display: inline;
padding-left: 30px;
padding-right: 30px;
position: relative; // IMPORTANT
}
并且您应该只将 display: inline-block
属性 添加到悬停 #menu ul li: hover ul
和正常 class 定义中的其余样式:(只是为了方便)
#menu ul li ul{
display: none;
top: 50px;
position: absolute;
background-color: #4D4D4D;
text-align: center;
width: 100%;
}
我在一个网站上工作,作为修订工具的一部分,但是我似乎无法让我的菜单布局正常运行,当我试图为同一个列表中的多个部分创建下拉菜单时,它们要么生成在彼此或布局到它们应该在的一侧,请注意,解决方案应该只使用 HTML 和 CSS.
为了澄清,下拉菜单应该出现在它们各自的下面 "title heading" 可以这么说。
#menu a:link {
color: #C7C1C1;
text-decoration: none;
}
#menu a:visited {
color: #C7C1C1;
text-decoration: none;
}
#menu a:hover {
color: #FFFFFF;
}
#menu {
text-align: center;
top: 0px;
position: absolute;
margin-bottom: -61px;
font-size: 20px;
}
#menu ul {} #menu ul li {
display: inline;
padding-left: 30px;
padding-right: 30px;
}
#menu ul li ul {
display: none;
}
#menu ul li:hover ul {
display: inline-block;
top: 50px;
left:
/*when applying this makes all dropdowns stack*/
;
position: absolute;
background-color: #4D4D4D;
text-align: center;
}
<div id="menu">
<div>
<ul>
<li><a href="#x">Introduction</a>
<ul>
<li><a href="#xxx">Past</a>
</li>
<li><a href="#xxx">Present</a>
</li>
<li><a href="#xxx">Future</a>
</li>
</ul>
</li>
<li><a href="#y">History</a>
<ul>
<li><a href="#yyy">Past</a>
</li>
<li><a href="#yyy">Present</a>
</li>
<li><a href="#yyy">Future</a>
</li>
</ul>
</li>
<li><a href="#z">National Flags</a>
<ul>
<li><a href="#zzz">Past</a>
</li>
<li><a href="#zzz">Present</a>
</li>
<li><a href="#zzz">Future</a>
</li>
</ul>
</li>
<li><a href="#a">International Maritime Signal Flags</a>
<ul>
<li><a href="#aaa">Past</a>
</li>
<li><a href="#aaa">Present</a>
</li>
<li><a href="#aaa">Future</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
将position: relative;
设置为<li>
#menu ul li{
display: inline;
padding-left: 30px;
padding-right: 30px;
position: relative; // add this
}
然后将left: 0;
位置设为<ul>
#menu ul li:hover ul{
display: inline-block;
top: 50px;
left: 0px; // Begin on the left of the li
position: absolute;
background-color: #4D4D4D;
text-align: center;
}
您需要将 position: relative;
添加到父元素以将子元素绝对定位到它:
#menu ul li{
display: inline;
padding-left: 30px;
padding-right: 30px;
position: relative; // IMPORTANT
}
并且您应该只将 display: inline-block
属性 添加到悬停 #menu ul li: hover ul
和正常 class 定义中的其余样式:(只是为了方便)
#menu ul li ul{
display: none;
top: 50px;
position: absolute;
background-color: #4D4D4D;
text-align: center;
width: 100%;
}