我正在制作水平导航菜单,我想使用CSS在div中垂直居中,我的意思是:
<nav id="header-nav">
<ul id="menu-header-menu" class="dropdown dropdown-horizontal">
<li id="menu-item-24" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/pagina-ejemplo/">
Inicio
</a>
</li>
<li id="menu-item-23" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/filosofia-y-politicas-de-calidad/">
Filosofía y políticas de calidad</strong>
</a>
</li>
<li id="menu-item-22" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/catalogo-de-productos/">
Catálogo de productos
</a>
</li>
<li id="menu-item-21" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/proceso-de-rotomoldeo/">
Proceso de rotomoldeo
</a>
</li>
<li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/contacto/">
Contacto
</a>
</li>
<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page">
<a href="http://localhost/rototec.com.co/preguntas-frecuentes/">
Preguntas frecuentes
</a>
</li>
</ul>
</nav>
现在所有的线高(a,li和ul)都是15,我的UL高度是45,所以li ...没有设置锚高度,我怎样才能使它们垂直居中?
这是我的CSS:
ul.dropdown {
font: bold 12px tt0142m, FuturaM, "Trebuchet MS", sans-serif;
text-transform: uppercase;
display: block;
height: 45px;
padding: 0px;
line-height: 15px;
vertical-align: bottom;
/* border: 1px solid green; */
}
ul.dropdown li {
padding: 0px;
margin: 0px;
}
ul.dropdown a {
text-decoration: none;
vertical-align: middle;
color: #000;
}
ul.dropdown li {
word-wrap: break-word;
width: 120px;
text-align: center;
font: FuturaM;
border-left: 2px solid #000;
line-height: 15px;
height: 45px;
}
ul.dropdown > li:last-child {
border-right: 2px solid black;
}
ul.dropdown li a {
display: block;
position: relative;
text-align: center;
vertical-align: middle;
color: #000;
font-weight: bold;
}
顺便说一句,现在所有链接都在顶部垂直对齐
答案 0 :(得分:2)
一种方法是将显示类型更改为表格,然后强制元素
ul.dropdown li {
display: table;
min-height: 45px;
}
ul.dropdown li a {
display: table-cell;
height: 45px;
vertical-align: middle;
}
这样做的问题是IE7和ie6需要一些特殊的样式
ul.dropdown li {
position: relative;
display: block;
}
ul.dropdown li a {
position: absolute;
top: 50%;
display: block;
}
ul.dropdown li a <new extra element that you do not yet have> {
position: relative;
top: -50%;
}
答案 1 :(得分:1)
最好的办法是制作li
s display: table-cell;
。表元素是目前唯一可以在中间垂直对齐内容的元素(在合理的支持范围内)
这是a jsfiddle that demonstrates this。 IE7不支持display: table-cell
,但我不认为这对你来说是个问题,你使用的是IE7不支持的伪造选择器:last-child
。
答案 2 :(得分:0)
假设您的意思是希望锚点在li的内部垂直对齐......
ul.dropdown li {
posiiton:relative;
}
ul.dropdown li a {
height:25px; /* change as needed */
position:absolute;
top:10px; /* change as needed */
}