CSS里面的CSS定位锚垂直对齐

时间:2012-03-26 15:41:31

标签: html css navigation positioning html-lists

我正在制作水平导航菜单,我想使用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;
}

顺便说一句,现在所有链接都在顶部垂直对齐

3 个答案:

答案 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 */
}