CSS Позиционирование якоря внутри li вертикально - PullRequest
1 голос
/ 26 марта 2012

Я делаю горизонтальное навигационное меню, и я хочу центрировать вертикальные якоря внутри div, используя CSS, вот что у меня есть:

<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 и ли ... высота якоря не установлена, как я могу сделать их по центру по вертикали?

Это мой 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 ]

2 голосов
/ 26 марта 2012

Один из способов - изменить тип отображения на таблицу, а затем навязать элементам высоту

ul.dropdown li {
display: table;
min-height: 45px;
}
ul.dropdown li a {
display: table-cell;
height: 45px;
vertical-align: middle;
}

. Проблема, связанная с этим, заключается в том, что IE7 и ie6 требуют особого стиля

* 1005.*
1 голос
/ 26 марта 2012

Лучше всего сделать li с display: table-cell;.Элементы таблицы - это единственные элементы, которые могут в настоящее время вертикально выравнивать содержимое по центру (в пределах разумной поддержки)

Вот jsfiddle, демонстрирующий это .display: table-cell не поддерживается IE7, но я не думаю, что это проблема для вас, вы используете селектор psuedo :last-child, который также не поддерживается IE7.

0 голосов
/ 26 марта 2012

Предполагая, что вы хотите, чтобы якоря были выровнены по вертикали внутри li ...

ul.dropdown li {
posiiton:relative;
}
ul.dropdown li a {
height:25px; /* change as needed */
position:absolute;
top:10px; /* change as needed */
}
...