Приветствую вас на сайте Impuls-Web!
Делая верстку страницы, вы неизбежно столкнетесь с необходимостью сделать выравнивание текста по вертикали css, и у начинающих веб-разработчиков это может вызвать некоторые сложности.
В сегодняшней статье я хотела бы рассмотреть наиболее эффективные способы выравнивания текста по вертикали в CSS, которые вы смогли бы запомнить или добавить к себе куда-нибудь в шпаргалку и использовать в зависимости от ситуации.
Навигация по статье:
Свойство для вертикального выравнивания vertical-align
Базовым свойством, которое позволяет сделать в CSS выравнивание по вертикали является vertical-align.
В основном для выравнивания текста по вертикали css вам понадобятся значения top, middle, bottom. Они подходят для большинства случаев.
Так, в случае если нам нужно выровнять текст в каком-то блоке, то для начала оборачиваем его в тег </p> и задаем для него стиль vertical-align:middle;
Но на практике все оказывается немного сложней. Дело в том что данное свойство срабатывает только для табличных элементов и для того чтобы оно заработало нужно будет пойти на одну хитрость.
Для родительского элемента, то есть блока, в котором находится текст, мы задаем свойство display:table, а для абзаца с тексом – display:table-cell. В этом случае блок преобразуется в таблицу, а абзац в ячейку таблицы.
1 2 3 4 5 6 7 8 |
.text-vertical-al{ display:table; } .text-vertical-al p{ display:table-cell!important; vertical-align:middle; } |
В результате у нас все заработало:
Выравнивание текста по вертикали CSS
Для выравнивания по вертикали текста в таблице можно использовать только значения top, bottom, middle, baseline. Другие значения для таблиц не работают.
Вот еще один пример выравнивания текста по вертикали css, но именно при работе с таблицей.
Допустим вам нужно выровнять текст по вертикали для всей таблицы. В этом случае в файле CSS для класса table нужно написать следующее:
1 2 3 4 5 6 |
table.table-va td{ border: 1px solid #1e1e1e; background-color: rgba(0, 146, 243, 0.13); height: 40px; vertical-align:middle; /* выравнивание текста по вертикали css*/ } |
В этом случае во всех ячейках текст будет выровнен по вертикали по центру:
По верху | По центу | По низу |
Так же можно задать выравнивание по вертикали для каждой ячейки. В этом случае проще всего указать стили для каждого элемента в коде HTML или при помощи псевдоклассов nth-child() в CSS:
1 2 3 4 5 6 7 8 9 10 |
<table class="table-va"> <caption>CSS выравнивание по вертикали в таблице</caption> <tbody> <tr> <td style="vertical-align:top;">По верху</td> <td style="vertical-align:middle;">По центу</td> <td style="vertical-align:bottom;">По низу</td> </tr> </tbody> </table> |
Вот что получится:
По верху | По центу | По низу |
Выравнивание текста по центру CSS
Как правило, совместно с задачей выровнять текст по вертикали необходимо сделать выравнивание текста по центру в CSS. Для этого мы можем использовать стандартное свойство text-align со значением center, которое нужно задать для родительского элемента, то есть для блока, в котором находится нужный текст.
Зададим для блока с текстом, который мы использовали в первом примере, выравнивание текста по ширине в CSS:
1 2 3 4 5 |
.text-vertical-al p{ display:table-cell; vertical-align:middle; text-align:center; } |
Теперь текст выровнен точно по центру блока:
Выравнивание текста по вертикали CSS
Выравнивание блока по центру в CSS
Так же, используя это свойство можно сделать в CSS выравнивание блока по центру. При этом данное свойство указываем для родительского блока, а для блока, который нужно выровнять задаем display:inline-block.
1 2 3 4 5 |
<div class="center-block"> <div class="centered"> Выравнивание блока по центру в CSS </div> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
.center-block{ height:200px; background:#E8E8FF; border:1px solid #F0F0F0; text-align:center; } .centered{ display:inline-block; width:150px; height:50px; background:#8CC684; border:1px solid #ccc; margin-top:75px; } |
В результате получаем вот такое выравнивание:
Такого же результата для выравнивания по ширине мы могли бы добиться, используя тоже свойство margin со значение auto для блока, который нужно выровнять. В этом случае код css выглядел бы следующим образом:
1 2 3 4 5 6 7 |
.centered{ width:150px; height:50px; background:#8CC684; border:1px solid #c1c1c1; margin:auto; } |
Для того чтобы задать, к примеру, отступ сверху и снизу по 50px можно написать так:
Если нужно задать сверху одно значения для отступа, а снизу другое, то можно использовать такой вариант:
В этом случае отступ сверху будет 50px, снизу – 20px, а по горизонтали блок будет выравниваться по центру.
Результат получается почти такой же:
Выровнять блок по центру получилось, но есть одно отличие. Как видите, тест в блоке теперь не выравнивается. Теперь, при необходимости сделать выравнивание текста по центру css, нужно для класса centered задать text-align:center.
Используя показанные в данной статье способы выравнивания по центру, вы сможете добиться необходимого результата практически в любой ситуации. Поэтому, я советую вам сохранить показанные мной заготовки кода где-нибудь у себя в шпаргалке. Они обязательно вам пригодятся в будущем.
Если данная статья была для вас полезной, и вы нашли в ней ответы на интересующие вас вопросы, поделитесь ей в социальных сетях и обязательно подпишитесь на мою рассылку новостей.
А на сегодня у меня все. Желаю вам успешной работы над вашими проектами! До встречи в следующих статьях!
С уважением Юлия Гусарь
оч полезная и познавательная статья)
Спасибо!