子菜单垂直对齐
Sub-menu vertically align
我有一个应该垂直显示子菜单的简单菜单。但是,我将此菜单更改为使其居中,现在它不是垂直显示而是水平显示。
这是我的代码笔:
http://codepen.io/anon/pen/NGwmGq
.navitem{
height: 30px;
}
#menu ul {
margin:0;
padding:0;
list-style-type:none;
text-align:center;
}
#menu li {
background-color:black;
display: inline-block;
padding: 0;
vertical-align: middle;
}
#menu li a {
display:block;
width:125px;
color:white;
text-decoration:none;
line-height:30px
}
#menu li a:hover {
color:#FFD700;
}
#menu ul li ul {
display:none;
}
#menu ul li:hover ul {
display:block;
}
#menu li:hover ul li {
float:none;
}
#menu li ul {
position:absolute;
}
#menu {
height:30px;
margin-top: 30px;
}
.table {
display: table; /* Allow the centering to work */
margin: 0 auto;
}
/* Logo */
#logo{
height: 190px;
width: 266px;
background-color:black;
margin: 0 30px;
}
/* Fin MENU */
如您所见,"portfolio" 实际上显示了子菜单,但该子菜单应垂直对齐。
只需将 display:block
添加到您的子菜单 li
。
#menu li:hover ul li {
float:none;
display:block; /* Add This */
}
更新:解释
1) display:block;
属性 是 HTML 中的块 属性。因此,每个带有 属性 的元素都需要换行(垂直元素视图)。
2) display:inline-block;
属性 是一个块但是 inline 属性。所以这样的元素 属性 出现在同一行(元素水平视图)。
您似乎删除了 li
上的定位上下文
#menu li {
background-color: black;
display: inline-block;
padding: 0;
vertical-align: middle;
position: relative; /* add this */
}
在您的 css 中,您使用 #menu li
选择器使所有主菜单项内联,这也适用于子菜单中的 li
。
因此您必须明确指定 display: block
子菜单 li
s
按如下所示更改您的代码。
#menu li:hover ul li {
float:none;
display:block;
}
对于 li,您将显示设置为行内块,这就是为什么它们排成一行。所以对于投资组合子菜单,将此 css 写入您的 css 文件
#menu ul li ul li {
display: block;
}
我有一个应该垂直显示子菜单的简单菜单。但是,我将此菜单更改为使其居中,现在它不是垂直显示而是水平显示。
这是我的代码笔:
http://codepen.io/anon/pen/NGwmGq
.navitem{
height: 30px;
}
#menu ul {
margin:0;
padding:0;
list-style-type:none;
text-align:center;
}
#menu li {
background-color:black;
display: inline-block;
padding: 0;
vertical-align: middle;
}
#menu li a {
display:block;
width:125px;
color:white;
text-decoration:none;
line-height:30px
}
#menu li a:hover {
color:#FFD700;
}
#menu ul li ul {
display:none;
}
#menu ul li:hover ul {
display:block;
}
#menu li:hover ul li {
float:none;
}
#menu li ul {
position:absolute;
}
#menu {
height:30px;
margin-top: 30px;
}
.table {
display: table; /* Allow the centering to work */
margin: 0 auto;
}
/* Logo */
#logo{
height: 190px;
width: 266px;
background-color:black;
margin: 0 30px;
}
/* Fin MENU */
如您所见,"portfolio" 实际上显示了子菜单,但该子菜单应垂直对齐。
只需将 display:block
添加到您的子菜单 li
。
#menu li:hover ul li {
float:none;
display:block; /* Add This */
}
更新:解释
1) display:block;
属性 是 HTML 中的块 属性。因此,每个带有 属性 的元素都需要换行(垂直元素视图)。
2) display:inline-block;
属性 是一个块但是 inline 属性。所以这样的元素 属性 出现在同一行(元素水平视图)。
您似乎删除了 li
#menu li {
background-color: black;
display: inline-block;
padding: 0;
vertical-align: middle;
position: relative; /* add this */
}
在您的 css 中,您使用 #menu li
选择器使所有主菜单项内联,这也适用于子菜单中的 li
。
因此您必须明确指定 display: block
子菜单 li
s
按如下所示更改您的代码。
#menu li:hover ul li {
float:none;
display:block;
}
对于 li,您将显示设置为行内块,这就是为什么它们排成一行。所以对于投资组合子菜单,将此 css 写入您的 css 文件
#menu ul li ul li {
display: block;
}