Стиль CSS vertical-align
определяет выравнивание текста в его текстовой строке.Это позволяет вам указывать текст как верхний или нижний индекс, например.
Так что на самом деле он не предназначен для вертикального выравнивания элемента внутри блока.
Существует явное исключение из этого,однако - ячейки таблицы (т.е. элементы <td>
и <th>
) используют стиль vertical-align
, чтобы сделать именно это: выровнять содержимое ячейки внутри ячейки.
Это исключение является чем-то странным- это действительно не должно существовать.CSS-дизайнеры поместили его туда, чтобы позволить CSS воспроизводить атрибут valign
элементов таблицы, который обычно использовался дизайнерами в старые времена темных макетов на основе таблиц.
Для других элементовВыравнивание содержимого прямоугольника по центру может быть чем-то вроде изобразительного искусства.Есть несколько методов:
Для отдельных строк текста просто сделайте line-height
такой же, как высота всего блока.Возможно, вам даже не понадобится vertical-align
.
Используйте display:table-cell;
, чтобы элемент имитировал ячейку таблицы, а затем используйте vertical-align
.Это работает, но может иметь непредвиденные последствия (есть другие атрибуты ячеек таблицы, которые вы, возможно, не хотите имитировать).
Если вы знаете высоту элемента, который хотите выровнять по вертикалиВы можете расположить его на 50% минус половина его высоты, например:
position:absolute;
top:50%;
height:200px;
margin-top:-100px; /* half the height */
Есть несколько других, но они должны помочь вам начать.
Надеюсь, это поможет.