Как я могу центрировать неупорядоченный список с динамическим контентом в div?

Я пытаюсь найти способ вертикально центрировать неупорядоченный список внутри div. Я нашел несколько способов сделать это, однако теги li внутри моего тега ul содержат код PHP, который получает текст из базы данных, и это приводит к тому, что длина текста внутри тегов li изменяется по длине, что значительно вызывает вертикальное просеивание внутри мой div, который имеет фиксированную высоту и ширину.

Как я могу вертикально расположить мой неупорядоченный список, чтобы он всегда был вертикально выровнен внутри этого div?

2 ответа

Если вы пытаетесь отцентрировать по горизонтали, вот немного кода, который будет работать для любой длины:

Предварительный просмотр: http://jsfiddle.net/Wexcode/6UtFz/

HTML:

<div>
    <ul>
        <li><a href="#">Element 1</a></li>
        <li><a href="#">Element 2</a></li>
        <li><a href="#">Element 3</a></li>
        <li><a href="#">Element 4</a></li>
    </ul>
</div>

CSS:

div { overflow: hidden; }
ul { 
    position: relative;
    float: left;
    left: 50%;
    padding: 0;
    list-style: none; }
li { 
    position: relative;
    float: left;
    right: 50%;
    margin: 0 5px; }

Для вертикального центрирования, просто используйте vertical-align имущество.
Смотрите: http://jsfiddle.net/Wexcode/fK793/

Это довольно просто. Просто используйте display:table; для родительского div и display:table-cell; а также vertical-align:middle; для ребенка.

Скрипка: https://jsfiddle.net/fzfa312m/

div { 
    background: #f2f2f2;
    width: 300px; 
    height: 300px; 
    display:table; }

ul {
    vertical-align: middle; 
    display: table-cell; }
<div>
    <ul>
        <li><a href="#">Element 1</a></li>
        <li><a href="#">Element 2</a></li>
        <li><a href="#">Element 3</a></li>
        <li><a href="#">Element 4</a></li>
    </ul>
</div>

Другие вопросы по тегам