Как выровнять текст в блоке по вертикали css
Выровнять текст по центру (по вертикали) у div с display: inline-block
Выровнять текст по центру (по вертикали) у div с display: inline-block . При использовании vertical-align меняется положение самого блока. Возможно ли это сделать без обертывания текста в <p> ?
Мой любимый костыль, сам пользуюсь
В любой нужный элемент вписывается div-table, в него div-table-cell, и вот в него уже всё, что нужно разместить по центру по вертикали
Оно применяется только к строчным элементам inline или строчным блокам inline-block. Оно влияет на выравнивание самого элемента, а не его содержимого (кроме случаев, когда применяется к ячейкам таблицы).
Когда оно применяется к ячейке таблицы, выравнивание влияет на содержимое ячейки, а не на неё саму.
Как выровнять элемент по вертикали внутри блочного элемента
Постановка задачи: необходимо задать вертикальное выравнивание для inline или inline-block элементов внутри блочного элемента.
Подходы к решению задачи. Существуют различные способы, рассмотрим основные из них:
1. Представить блочный элемент как ячейку таблицы ( display: table-cell ).
2. IE6-7: метод expression.
3. Приравнивание межстрочного интервала (свойство line-height ) и высоты блока (для однострочных элементов).
4. Позиционирование при помощи внешнего блока ( position:absolute ).
Ну а подведя итоги, рассмотрим еще один метод:
5. Выравнивание с помощью свойства vertical-align.
display: table-cell
Для вертикального выравнивания применяется свойство display: table-cell родительскому блоку, которое заставляет элемент эмулировать ячейку таблицы. Ему же задается высота и vertical-align: middle :
- Простота;
- Выравнивает как одну, так и несколько строк.
- Не работает в IE7 и ниже;
- Без дополнительных конструкций сложно манипулировать горизонтальным положением внешнего блока;
- Не всем нравится сам факт использования display: table-cell .
IE6-7: метод expression
Т.к. предыдущий способ не работает в IE6-7, то надо исправить эту неприятность.
Expression — короткие куски JS кода, которые помещаются в файл стилей, выполняются один раз и работают только в IE. Expression невалидны. Добавляем к предыдущему примеру в файлы стилей для IE6 и 7 такой кусок кода:
Рассматривать достоинства и недостатки смысла тут нет, т.к. достоинств нет, кроме того, что этот способ дополняет первый в IE6-7, но т.к. эти браузеры уже устарели, на них можно закрыть глаза.
line-height
Для выравнивания одной строки текста можно использовать одинаковые значения высоты и межстрочного интервала для блока-родителя. Подходит для кнопок, пунктов меню и т.д.
- Простота;
- Кроссбраузерность.
- Подходит только для однострочных элементов;
- Позволяет выравнивать только по центру.
position и отрицательный margin вверх
Элемент можно выровнять по вертикали, задав ему фиксированную высоту и применив position: absolute и отрицательный margin-top , равный половине высоты выравниваемого элемента. Родительскому блоку должен быть присвоен position: relative :
- Кроссбраузерность;
- Выравнивать элементы можно как по центру, так и в любом другом положении.
- Трудоемко при большом количестве элементов;
- Сложно управлять;
- Необходимо знать и фиксировать высоту элемента;
- В некоторых браузерах абсолютное позиционирование может вызвать снижение производительности.
Итог по популярным методам
Как видно, данные методы не являются универсальными – каждый из них имеет пусть и небольшие, но недостатки. Наиболее универсальным оказывается метод display: table-cell , но он мне никогда не нравился, к тому же мы очень долго не отказывались от поддержки IE6-7. Поэтому появилась необходимость поработать над чем-то более универсальным. Рассмотрим Выравнивание при помощи vertical-align .
Выравнивание при помощи vertical-align
Как известно, свойство vertical-align не работает для блочных элементов, поэтому применять это свойства для них бесполезно. Однако, данное свойство прекрасно работает для inline и inline-block элементов. Если мы попробуем применить данное свойство для элементов внутри блочного элемента, то мы получим следующую картину:
Как видно, элементы выравниваются относительно строки, а не всего блока, что нам не подходит. Попробуем тогда внутрь блока добавить элемент (т.к. для inline элемента высоту задать нельзя, то элемент должен быть inline-block ) с высотой равной высоте внешнего блока. Добавляем <span > (на картинке ниже показан серой линией) и получаем:
Зададим для всех элементов <span > vertical-align:middle .
Что ж, одну строку мы таким образом отцентрировали. А что, если надо несколько строк? И тут проблем нет. Надо лишь для текстовых элементов задать display:inline-block :
Если нам не важна совместимость со старыми версиями IE, то элемент <span > мы можем удалить, а его стили заменить на:
Выравнивание текста по вертикали и центру CSS
Если вы когда-либо пробовали, то это сложно, особенно если вы хотите избежать использования таблиц. К счастью, наши крики о помощи были услышаны, и одно из новых вооружений, добавленных в арсенал CSS для решения этой проблемы, это тип макета, известный как гибкий макет коробки. Как вы узнаете через несколько мгновений, которые предоставляет вам некоторые действительно отличные функции, чтобы упростить сложные макеты. Часть этой отличной функциональности также позволяет вам центрировать ваш контент вертикально и горизонтально, и вот что мы рассмотрим в этом уроке. Вы можете сделать это с дополнением до некоторой степени, но это может вывести ваш макет на более мелкие экраны. Добавление пользовательского класса CSS в таблицу стилей означает, что вы можете вертикально центрировать любой контент за считанные секунды.
Горизонтальное выравнивание определяет, как левый и правый края абзаца совпадают между левым и правым краями текстового поля. Вертикальное выравнивание определяет размещение знака в текстовом поле по вертикали. Отсутствие хороших способов вертикального центрирования элементов в CSS было темным недостатком его репутации в значительной степени для всего ее существования.
Первый метод с line-height
Первый способ идет простой и в чем то банален, где есть свои недостатки что будет идти ограничение в применении. При кодировании html страниц для сайта междустрочный интервал текстового содержимого, вероятно, является одним из атрибутов, который обычно остается по умолчанию. Вообще нам нужно задать высоту самой строки, которая идет с аналогичной высотой для блока, где используется line-height свойство.
Также вы можете сразу посмотреть, как все в реальности будет выглядеть.
Аналогичным методом, есть возможность реализовать, как выставить изображение, что будет по центру и безусловно по вертикали. Здесь остается только прописать одно свойство vertical-align: middle; которое отвечает за вывод картинки.
.second-variation <
border: 2px solid red;
line-height:158px;
>
.second-variation div <
text-align:center;
>
.second-variation img <
vertical-align: middle;
border: 0px solid #3a3838;
>
Реализуем снимки изображений по центру и вертикали.
Выравнивание со свойством position
Это вероятно самый известный метод, но больше всего распространенный по применению к использованию с помощью CSS. Но здесь нужно добавить, что он также не идеален и у этого метода, также есть свои небольшие нюансы, которые связаны с центром элемента, что если будет задаваться в процентном соотношение, то станет центрирование по левую сторону верхней стороны, внутр самого блога.
Интервалы между строками или линией высотой является вертикальной высотой между строками текста в тонированном HTML странице. Почти всегда это значение расстояния устанавливается соответствующим значением браузером или механизмом рендеринга. Это значение обычно зависит от шрифта отображаемой страницы и других факторов.
Выравнивание со свойством table
В этом методе задействуем проверенную и старую методу, где переделаем элементы в таблицу в которой находятся ячейки. Что по тегу, под названием table, то здесь он не будет задействован, здесь будем задавать совершенно другие свойство CSS, это display: table;, display: table-cell;. Если говорить про самые старые версий IE, то данные здесь просто выводить не будет. Надеюсь вы свой браузер обновили, так как он становится не актуален и почти все не корректно выводит.
.cherevert-variation <
border: 2px solid #c30b0b;
height: 173px;
display: table;
width: 100%;
font-size: 17px;
font-weight: bold;
color: #3945a0;
>
.cherevert-variation div <
display: table-cell;
vertical-align: middle;
text-align:center;
>
Прежде всего, давайте посмотрим, что используется по умолчанию, которое используется большинством браузеров. В большинстве современных дневных браузеров интервал между линиями.
Выравнивание со свойством flex
Здесь мы подходим, к более оригинальному варианту, у которого имеются свои свойства, что можно редко встретить верстки интернет ресурса. Но все же они применяются, что в каких то случаях они полезны. Это устанавливает основную ось, таким образом, определение элементов гибкости направления помещается в контейнер гибких дисков.
Вы можете указать значение для строки-высоты так же, как вы указали бы любой другой размер в css, либо как число, размер пикселя, либо как процент .
Выравнивание со свойством transform
И вот подошли в самому крайнему методу, но не к самому последнему по применению в использование его веб дизайне. Здесь все просто, нужно сдвинуть по вертикали заданный элемент на то значение, которое вам нужно. Свойство transform, это список преобразований, которые установщик применяет при установке пакета. Установщик применяет преобразования в том же порядке, в каком они указаны в свойстве.
Когда вы укажете значения в виде числа, он будет основываться на текущем размере шрифта в качестве базы. Текущий размер шрифта умножается на число, которое вы указываете для вычисления высоты линии или пробела между строками.
Если вы хотите центрировать знаки по горизонтали в элементе, вы должны использовать text-align: center. Один из вариантов, если вы хотите центрировать его по вертикали, и у вас есть фиксированный верхний нижний колонтитул и один ряд текста, установите, что высота линии будет такой же, как высота вашего нижнего колонтитула.
Если вам нужно центрировать текст внутри элемента, такого как div, header или paragraph, вы можете использовать свойство text-align CSS.
Text-align имеет несколько допустимых свойств:
Center: Текстура центрирована;
left: Будет выравниваться с левой стороны контейнера;
right: Выровнен с правой стороны контейнера
justify: Вынужден ровняться, как с левой, так и с правого края контейнера, за исключением крайних строк;
justify-all: Заставляет крайнее строку оправдывать знаки;
start: То же самое, что по левую, только если направление идет с лева на правую сторону. Но правильно будет, если изначально задать направление текстового направление, что произойдет справа налево;
End: Противоположность начала;
match-parent: Аналогично наследованию, кроме начала и конца, вычисляется относительно родительского элемента;
Используйте эти свойства для выравнивания текста внутри родительского или оберточного div. Если вы хотите центрировать текст по горизонтали в элементе, вы должны использовать text-align: center.
Vertical align CSS — выравнивание по вертикали в помощью CSS
Вертикальное выравнивание CSS — не самая простая задача. Осложняет дело и то, что с сегодняшними требованиями к адаптивному дизайну для разных устройств разработчикам приходится создавать элементы с «гибкой» высотой, и вычисление центра по вертикали становится довольно хитрой задачей.
В данной статье мы рассмотрим:
- свойство vertical-align, как и когда оно работает;
- метод центрирования по вертикали элемента с известной высотой;
- центрирование по вертикали элементов с изменяемой высотой.
- Vertical-align CSS
- Центрирование по вертикали
- Адаптивное центрирование по вертикали
- Fluid vertical center
Свойство vertical-align влияет только на элементы, у которых свойство display имеет значения inline, inline-block или table-cell.
Длина и проценты выравнивают базовую линию элемента на соответствующем расстоянии от базовой линии родительского элемента.
Ключевые значения vertical-align могут быть следующими:
- baseline;
- sub;
- super;
- text-top;
- text-bottom;
- middle;
- top;
- bottom.
Большинство из них не требует дополнительного объяснения. Стоит отметить только sub и super, которые отображают элемент как подстрочный и надстрочный, не изменяя при этом размер шрифта.
Рассмотрим наглядный пример вертикального выравнивания текста CSS с помощью vertical-align. У нас есть сетка с изображениями и текстом — все они разной высоты, поэтому не везде текст выравнивается красиво:
<div> <img src="http://placebacn.com/200/400"> <h3>grilled bacon</h3> </div> <div> <img src="http://placebacn.com/200/300"> <h3>tasty bacon</h3> </div> <div> <img src="http://placebacn. com/200/200"> <h3>crispy bacon</h3> </div> <div> <img src="http://placebacn.com/200/350"> <h3>bacon</h3> </div>
Чтобы всё аккуратно выровнять, можно задать контейнерам сетки свойство display: inline-block и использовать для изображений свойство vertical-align: bottom. Если бы в нашем примере не было текста, можно было бы использовать vertical-align: middle и легко добиться нужного результата.
В примере, приведенном ниже, у нас есть div с чёрным фоном и рамкой. Внутри него находится блок поменьше с нужной нам шириной и высотой:
<div> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nobis aperiam quidem minima a qui ipsa deleniti nisi modi nesciunt dolores, consequatur dolorem, dignissimos debitis distinctio. Voluptas eligendi fuga voluptatem eos. </div> </div>
Если мы знаем высоту блока, можно использовать абсолютное позиционирование, чтобы осуществить CSS вертикальное выравнивание по центру.
Применив к контейнеру свойство position: relative, можно задать абсолютное позиционирование внутреннему блоку. Если присвоить свойствам top и left значение 50%, блок сдвинется на 50% от верхнего и левого краёв. Верхний левый угол блока окажется точно в центре контейнера:
.container { position: relative; background: #444; } .box { position: absolute; top: 50%; left: 50%; width: 400px; height: 200px; margin: -100px 0 0 -200px; color: #fff; background: #cc3f85; }Наш блок имеет заданные ширину и высоту, поэтому можно установить для него отрицательные отступы — на половину высоты вверх и половину ширины влево. Наш блок теперь размещён в центре контейнера.
Этот приём CSS вертикального выравнивания блока работает, но его недостаток заключается в неизменяемой ширине элементов. Поэтому он будет далеко не лучшим решением для работы над адаптивным дизайном.
Отличные результаты для центрирования по вертикали элементов с изменяемой высотой можно получить, объединив vertical-align: middle с псевдоэлементами. Возьмём тот же пример с блоком внутри контейнера, но в этот раз блок будет иметь изменяемую высоту.
Главный приём здесь — создать невидимый элемент (используя псевдоэлемент), который будет заполнять контейнер по высоте, и установить свойства display: inline-block и vertical-align:middle. После этого нужно выровнять внутренний блок, также установив ему свойства display: inline-block и vertical-align: center. Затем центрировать блок по горизонтали, используя text-align: center:
.container { height: 400px; margin: 20px; background: #444; font-size: 0; text-align: center; } .container:before { content: ''; display: inline-block; height: 100%; vertical-align: middle; } .box { display: inline-block; width: 50%; padding: 2em; border: 1px solid #000; background: #cc3f85; font-size: 1rem; vertical-align: middle; }
Теперь, когда изменяется ширина контейнера, также изменяется ширина дочернего блока в процентах, соответственно меняя его высоту. Но при этом к блоку применяется вертикальное выравнивание CSS div.
Дайте знать, что вы думаете по этой теме статьи в комментариях. Мы крайне благодарны вам за ваши комментарии, лайки, подписки, дизлайки, отклики!
Пожалуйста, опубликуйте свои комментарии по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, отклики, подписки, дизлайки, лайки!
МКМихаил Кузнецовавтор-переводчик статьи «Vertical-Alignment in CSS»
Выравнивание по вертикали CSS
Вертикальное выравнивание CSS — весьма непростая работа. Я видел достаточно людей, борющихся с этим, и постоянно обнаруживаю “критические” ошибки, когда дело доходит до реального адаптивного дизайна.
Но не бойтесь: если вы уже боретесь с CSS вертикальным выравниванием — вы обратились по адресу.
- Поговорим о свойстве CSS vertical align
- Мы хотим центрировать контент, а не сам div!
- Свойство position
- Давайте приступим к делу!
- Вы слышали о спецификации flexbox?
- Ссылки и дополнительная литература
Когда я только начинал работать в области веб-разработки, то немного помучился с этим свойством. Я думал, что оно должно работать, как классическое свойство “text-align”. Ах, если бы все было так просто…
CSS свойство vertical-align отлично работает с таблицами, но не с div или другими элементами. Когда вы используете его для div, то оно выравнивает элемент относительно других блоков, но не его содержимое. При этом свойство работает только с display: inline-block;.
У вас есть два выхода. Если у вас только элементы div с текстом, то можно использовать свойство line-height. Это означает, что нужно знать высоту элемента, но нельзя ее устанавливать. Таким образом, ваш текст будет всегда в центре.
Правда у этого подхода CSS выравнивания по вертикали есть недостаток. Если текст многострочный, тогда высота строки будет умножена на количество строк. Скорее всего, в этом случае, у вас получится ужасно сверстанная страница.
Взгляните на приведенный ниже пример.
Если контент, который вы хотите центрировать, состоит больше, чем из одной строки, тогда лучше использовать табличные div. Также можно использовать таблицы, но семантически это не правильно. Если вам нужны разрывы для адаптивных целей, лучше использовать элементы div.
Чтобы это работало, должен быть родительский контейнер с display: table, а внутри него – нужное количество столбцов, которое вы хотите центрировать с помощью display: table-cell и vertical-align: middle.
Почему это работает с табличной разметкой, но не с элементами div? Потому что у строк в таблице одинаковая высота. Когда содержимое ячейки таблицы не использует все доступное пространство по высоте, браузер автоматически добавляет вертикальные отступы, чтобы центрировать содержимое.
Начнем с основ выравнивания по вертикали CSS div:
- position: static — это значение по умолчанию. Элемент отображается в соответствии с порядком HTML;
- position: absolute — используется, чтобы определить точное положение элемента. Эта позиция всегда связана с ближайшим относительно позиционированным родительским элементом (не static). Если не определить точное положение элемента, вы потеряете контроль над ним. Он отобразится случайно, полностью игнорируя поток документа. По умолчанию элемент отображается в левом верхнем углу;
- position: relative — используется для позиционирования элемента относительно его нормального положения (статического). Это значение сохраняет порядок потока документа;
- position: fixed — используется для позиционирования элемента относительно окна браузера, поэтому он всегда отображается в области просмотра.
Примечание: некоторые свойства (top и z-index) работают только в том случае, если для элемента задано значение position (не static).
Вы хотите осуществить CSS выравнивание по центру по вертикали? Сначала создайте элемент с относительной позицией и размерами. Например: 100% по ширине и высоте.
Второй шаг может быть различным в зависимости от целевых браузеров, но можно использовать один из двух вариантов:
Старое свойство: нужно знать точный размер окна, чтобы удалить половину ширины и половину высоты. Посмотрите приведенный ниже пример.
Новое свойство CSS3: можно добавить свойство transform со значением translate 50% и блок всегда будет в центре. Посмотрите приведенный ниже пример.
В принципе, если вы хотите центрировать контент, никогда не используйте top: 40% или left: 300px. Это прекрасно работает на тестовых экранах, но это не центровка.
Помните position: fixed? Можно сделать с ним то же самое, что и с абсолютной позицией, но вам не нужна относительная позиция для родительского элемента — она всегда будет позиционировать относительно окна браузера.
Можно использовать flexbox. Это гораздо лучше, чем любой другой вариант выравнивания текста по центру CSS по вертикали. С flexbox управление элементами напоминает детскую игру. Проблема состоит в том, что нужно отбросить некоторые браузеры, такие как IE9 и версии ниже. Вот пример того, как вертикально центрировать блок:
Используя flexbox расположение, можно центрировать несколько блоков.
Если вы примените то, что узнали из этих примеров, то сможете освоить CSS выравнивание блока по вертикали в кратчайшие сроки.
- Изучение CSS разметки
- FlexBox Froggy
- Полное руководство по flexbox
- Песочница flexbox
Пожалуйста, оставьте ваши отзывы по текущей теме статьи. За комментарии, дизлайки, подписки, лайки, отклики низкий вам поклон!
ВЛВиктория Лебедеваавтор-переводчик статьи «CSS Vertical Align for Everyone (Dummies Included)»
css — Вертикальное выравнивание текста внутри div
Вопрос
Изменено 2 года, 1 месяц назад
Просмотрено 1,7 млн раз
На этот вопрос уже есть ответы здесь :
Как выровнять текст в div по вертикали? (33 ответа)
Закрыт 8 лет назад.
Приведенный ниже код (также доступный в качестве демонстрации на JS Fiddle) не размещает текст посередине, как мне бы хотелось. Я не могу найти способ центрировать текст по вертикали в
даже с использованием атрибута margin-top
. Как я могу это сделать?
<дел> 1234 еще одно текстовое содержимое, которое должно быть центрировано по вертикали
# содержимое столбца { отображение: встроенный блок; граница: 1px сплошной красный; должность: родственница; } # столбец-контент сильный { цвет: #592102; размер шрифта: 18px; } картинка { поле сверху:-7px; вертикальное выравнивание: посередине; }
- css
- вертикальное выравнивание
1
Андрес Ильич прав. На всякий случай, если кто-то пропустит свой комментарий…
A. ) Если у вас есть только одна строка текста:
div { высота: 200 пикселей; высота строки: 200 пикселей; /* <-- это то, что вы должны определить */ }
вертикально центрированный текст
B.) Если у вас несколько строк текста:
дел. { высота: 200 пикселей; высота строки: 200 пикселей; } охватывать { отображение: встроенный блок; вертикальное выравнивание: посередине; высота строки: 18px; /* <-- настроить это */ }
текст с вертикальным центрированием текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали текст с центрированием по вертикали
6
Создайте контейнер для вашего текстового содержимого, возможно, span
.
# содержимое столбца { отображение: встроенный блок; } картинка { вертикальное выравнивание: посередине; } охватывать { отображение: встроенный блок; вертикальное выравнивание: посередине; } /* для наглядности */ # содержимое столбца { граница: 1px сплошной красный; положение: родственник; }
<дел>
1234
еще одно текстовое содержимое, которое должно быть центрировано по вертикали
дел>
Дж. С. Фиддл
11
Обновление от 10 апреля 2016 г.
Флексбоксы теперь следует использовать для вертикального (или даже горизонтального) выравнивания элементов.
корпус { высота: 150 пикселей; граница: 5px сплошной голубой; размер шрифта: 50px; дисплей: гибкий; выравнивание элементов: по центру; /* Вертикальное выравнивание по центру */ выравнивание содержимого: по центру; /* Горизонтальное выравнивание по центру */ }
Middle
Хорошее руководство по flexbox можно прочитать на CSS Tricks. Спасибо Бен (из комментариев) за указание на это. У меня не было времени обновить.
Хороший парень по имени Махендра разместил здесь очень рабочее решение.
Следующий класс должен центрировать элемент по горизонтали и вертикали относительно его родителя.
.абсолютный центр { /* Internet Explorer 10 */ отображение: -ms-flexbox; -ms-flex-pack: по центру; -ms-flex-align: по центру; /* Fire Fox */ дисплей: -moz-box; -moz-box-pack: по центру; -moz-box-align: по центру; /* Safari, Opera и Chrome */ дисплей: -webkit-box; -webkit-box-pack: по центру; -webkit-box-align: по центру; /* W3C */ дисплей: коробка; коробка-упаковка: центр; выравнивание по рамке: по центру; }
2
Принятый ответ не работает для многострочного текста.
Я обновил JSfiddle, чтобы показать вертикальное выравнивание многострочного текста CSS, как описано здесь:
# содержимое столбца { граница: 1px сплошной красный; высота: 200 пикселей; ширина: 100 пикселей; } дел { отображение: таблица-ячейка; вертикальное выравнивание: посередине; выравнивание текста: по центру; }еще одно текстовое содержимое, которое должно быть центрировано по вертикали
Также работает с
в "еще один. .."
1
Попробуйте это:
HTML
Текст
CSS
раздел { высота: 100 пикселей; } охватывать { высота: 100 пикселей; отображение: таблица-ячейка; вертикальное выравнивание: посередине; }
0
Это просто должно работать:
#column-content { -------- верхняя граница: авто; нижняя граница: авто; }
Я попробовал это на вашей демоверсии.
4
Чтобы сделать решение Омара (или Махендры) еще более универсальным, блок кода, относящийся к Firefox, следует заменить следующим:
/* Firefox */ дисплей: гибкий; выравнивание содержимого: по центру; выравнивание элементов: по центру;
Проблема с кодом Омара, в противном случае работающим, возникает, когда вы хотите центрировать блок на экране или в его непосредственном предке. Это центрирование выполняется либо путем установки его положения на
положение: относительное;
или позиция: статическая;
(не с позицией: абсолютной и фиксированной).
А потом margin: auto; или поле справа: авто; поле слева: авто;
В этой среде выравнивания по центру блока предложение Омара не работает. Он не работает и в Internet Explorer 8 (все еще 7,7% рынка). Таким образом, для Internet Explorer 8 (и других браузеров) следует рассмотреть обходной путь, как показано в других вышеперечисленных решениях.
1
Добавить вертикальное выравнивание к содержимому CSS #column-content strong
тоже:
#column-content strong { ... вертикальное выравнивание: посередине; }
См. также обновленный пример.
=== UPDATE ===
С интервалом вокруг другого текста и другим выравниванием по вертикали:
HTML:
. .. еще одно текстовое содержимое, которое должно быть центрировано по вертикали .. .
CSS:
# диапазон содержимого столбца { вертикальное выравнивание: посередине; }
См. также следующий пример.
0
Это самый простой способ сделать это, если вам нужно несколько линий. Оберните текст span
'd в другой span
и укажите его высоту с помощью line-height
. Трюк с несколькими строками заключается в сбросе внутреннего span
line-height
.
ВАШ ТЕКСТ ЗДЕСЬ
.textvalignmiddle { line-height: /* Установить высоту */; } .textvalignmiddle > диапазон { отображение: встроенный блок; вертикальное выравнивание: посередине; высота строки: 1em; /* Возвращаем нормальную высоту строки */ }
DEMO
Конечно, внешний диапазон
может быть div
или чем-то еще.
0
Я знаю, что это совершенно глупо, и обычно вы не должны использовать таблицы, если не создаете их, но:
Ячейки таблицы могут выравнивать несколько строк текста по вертикали по центру и даже делают это по умолчанию. Таким образом, решение, которое отлично работает, может выглядеть примерно так:
HTML:
<таблица>таблица> лорем ипсум ...
CSS (сделать так, чтобы элемент таблицы всегда помещался в блок div):
.box { /* Например */ высота: 300 пикселей; } .textalignmiddle { ширина: 100%; высота: 100%; }
См. здесь: http://www.cssdesk.com/LzpeV
Очень активный вопрос . Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.
Учебник по атрибуту вертикального выравнивания в CSS — блог Terresquall
Из всех атрибутов CSS, доступных веб-разработчикам, атрибут вертикального выравнивания
, пожалуй, самый загадочный. На первый взгляд, этот атрибут кажется двоюродным братом атрибута text-align
с выравниванием по вертикали, но когда вы пытаетесь использовать его для вертикального центрирования элементов, он не работает!
<дел>Элемент должен располагаться по центру по вертикали
дел>
Элемент, центрируемый по вертикали
Причина, по которой vertical-align
не работает в приведенном выше примере, заключается в том, что, как и атрибут text-align
, он не работает с элементами блочного уровня (элементы с display:block
). Однако, в отличие от атрибута text-align
, помимо работы с элементами inline
и inline-block
, атрибут vertical-align
также работает с элементами table
, хотя и по-другому.
В этой статье мы будем изучать только то, как атрибут vertical-align
взаимодействует с элементами inline
и inline-block
. Если вы хотите использовать вертикальное выравнивание
для выравнивания невстроенных элементов, вам нужно нажать на вышеупомянутую ссылку.
- Возможно
выравнивание по вертикали
позиций-
выравнивание по вертикали: базовая линия
-
выравнивание по вертикали: сверху / снизу / посередине
-
vertical-align: text-top / text-bottom
-
vertical-align: sub / super
-
- Constant-value offsets for
vertical-align
- Length values
- Percentage values
- Дополнительная информация
- Что такое
line-height
? - Подробнее о
vertical-align: baseline
- Выравнивание
элементов
с помощьюvertical-align
- Что такое
- Заключение
1. Возможные
vertical-align
position Наиболее распространенный вариант использования vertical-align
— установка вертикального позиционирования встроенных элементов относительно друг друга.
vertical-align: baseline
По умолчанию (т. е. если атрибут vertical-align
не установлен для встроенных или встроенных блочных элементов), все встроенные и встроенные блочные элементы будут вертикально выровнены по базовый уровень их родителя; но что такое базис?
Короче говоря, базовая линия относится к строке, с которой естественным образом выравниваются слова во встроенном элементе. В приведенном ниже примере базовой линией является синяя линия внизу. Обратите также внимание на то, что элемент
, будучи встроенным элементом, естественно, также выравнивается по базовой линии по умолчанию.
базовый текст.базовый текст
Статья продолжается после объявления:
б.
vertical-align: top/bottom/mid
Чтобы сместить положение inline и inline-block элементов относительно друг друга, мы можем применить к ним атрибуты top
, bottom
или middle
. В приведенных ниже примерах синяя линия показывает, где находится выравнивание для вертикально выровненного элемента
.
Обратите внимание, что при работе с атрибутом вертикального выравнивания
(как в примерах, показанных ниже) мы обычно применяем атрибут CSS к самому высокому элементу в строке. Вы можете пренебречь этим правилом, но это может привести к странному поведению выравнивания, которое мы рассмотрим позже в этой статье.
вертикальное выравнивание: вверху
вертикальное выравнивание: вверхувертикальное выравнивание: вверху
вертикальное выравнивание: нижнее
вертикальное выравнивание: нижнеевертикальное выравнивание: нижнее
вертикальное -выравнивание: посередине
вертикальное выравнивание: посерединеcom/100/100"/>вертикальное выравнивание: посередине
c.
vertical-align: text-top / text-bottom
Они ведут себя аналогично top
, bottom
и middle
, за исключением того, что они не учитывают line-height
при выравнивании себя, в отличие от атрибутов top
и bottom
, которые учитывают. В приведенных ниже примерах line-height
текстовых элементов был установлен на 36px
и обозначен оранжевой строкой :
vertical-align: text-top
вертикальное выравнивание: text-top< img src="https://placekitten.com/100/100"/>vertical-align: text-top
вертикальное выравнивание: topvertical-align: top
вертикальное выравнивание: текст по нижнему краю
вертикальное выравнивание: text-bottomcom/100/100"/>вертикальное выравнивание: текст по нижнему краю
вертикальное выравнивание: по нижнему краюvertical-align: bottom
d.
vertical-align: sub / super
Эти 2 значений vertical-align
будут выравнивать элемент по позициям нижнего или верхнего индекса соседнего текста. В HTML можно использовать
и
для записи подстрочного и надстрочного текста соответственно.
Индексы
Карбонат натрия представляет собой Na2Cl3.
Карбонат натрия Na 2 Cl 3 .
Надстрочные индексы
z2 = x2 + y2
z 2 = x 2 + y 2
Когда для вертикального выравнивания
установлено значение sub
или super
, элемент таким образом выравнивается по базовой линии, по которой будет располагаться текст нижнего или верхнего индекса.
выравнивание по вертикали: sub
вертикальное выравнивание: подчиненноевертикальное выравнивание: sub
вертикальное выравнивание: супер
вертикальное- align: superвертикальное выравнивание: супер
Статья продолжается после рекламы:
2. Смещение постоянного значения для
вертикальное выравнивание
Вместо ввода текстового значения для установки атрибута вертикального выравнивания
вы также можете ввести либо значение длины (например, em
,
пикселей и т. п.), либо процентное значение ценность.
а. Значения длины
Установив для атрибута вертикального выравнивания
определенную длину, можно определить, насколько заданный элемент будет смещен от базовой линии остального текста. В таком случае можно использовать как положительные, так и отрицательные значения, чтобы установить элемент выше или ниже базовой линии соответственно.
Смещение для этих значений всегда будет относительно базовой линии, , так как нет возможности установить как текстовую позицию, так и числовое смещение.
Вы можете использовать любые единицы, которые обычно используются в CSS, такие как em
, px
, rem
и т. д. Ниже приведены несколько примеров использования единиц em
и px
.
Положительное значение смещения
вертикальное выравнивание 2emвертикальное выравнивание 2em
2em пробел
Отрицательное значение смещения
вертикальное выравнивание -20pxвертикальное выравнивание -20px
20px пробел
б.
Процентные значения Ввод процентного значения сместит элемент на процент высоты строки
от текущей высоты строки. Ниже у нас есть раздел, объясняющий атрибут line-height
, а пока приведем пример с использованием процентного значения.
Оранжевая строка представляет высоту строки текста, а зеленая строка представляет значение смещения. Обе строки имеют одинаковую длину: высота строки встроенного элемента.
вертикальное выравнивание 100 %вертикальное выравнивание 100 %
Обратите внимание, что линия высота приведенного выше примера наследуется от родителя
тег. Все элементы внутри будут автоматически иметь высоту строки 2em
, то есть 200% размера шрифта абзаца.
В этом разделе мы исследуем концепции, атрибуты и странные особенности, которые могут повлиять на поведение вертикального выравнивания.
а. Что такое
высота строки
? line-height
— атрибут CSS, относительно важный для некоторых значений вертикального выравнивания
. Поэтому важно знать, что это такое. Проще говоря, line-height
определяет размер строки текста.
Этот текст имеет высоту строки 1em, или 100% размера шрифта. Это означает, что текст расположен относительно плотно, без большого пространства между строками.
Этот текст имеет высоту строки 1em, или 100% размера шрифта. Это означает, что текст относительно плотно упакован, между строками мало места.
Этот текст имеет высоту строки 1em, или 100% размера шрифта. Это означает, что текст относительно плотно упакован, между строками мало места.
Этот текст имеет высоту строки 2em, или 100% размера шрифта. Это означает, что между двумя строками текста есть интервал, равный 100% размера шрифта.
б. Подробнее о
vertical-align: baseline
Всякий раз, когда встроенные или встроенные блочные элементы располагаются рядом друг с другом, браузер определяет базовую линию для каждой строки на основе высоты всех различных элементов, находящихся внутри. В приведенном ниже примере у нас есть несколько элементов разного размера в абзаце, все они выровнены по базовой линии.
Обычный текст. Более крупный текст.
Это еще одна строка с базовой линией, отличной от первой строки.
Обычный текст. Крупный текст.
Еще одна строка с базовой линией, отличной от первой строки.
Статья продолжается после объявления:
c. Выравнивание
элементов
с vertical-align
Атрибут вертикального выравнивания
можно очень эффективно использовать для выравнивания горизонтально расположенных форм, поскольку элементы формы, такие как флажки, текстовые поля и т. д., являются встроенными элементами, которые можно выравнивать по вертикали. См. пример ниже:
<форма> форма>
Метка флажка:
Обратите внимание, что по умолчанию элемент флажка немного смещен по вертикали от центра. Это можно исправить, установив оба <метка>
и установите флажок, чтобы средний
был значением вертикального выравнивания
.
<форма> форма>
Метка флажка:
Существует множество других применений использования vertical-align
на элементах
для вертикального выравнивания и организации форм. Если вам нужна статья для дальнейшего изучения этого вопроса, сообщите нам об этом в комментариях ниже!
Заключение
В следующей статье мы рассмотрим, как можно использовать vertical-align
для вертикального выравнивания наших элементов (а не только текста). Кроме того, мы также будем изучать, как мы можем использовать другие конструкции HTML и CSS (помимо vertical-align
) для центрирования наших элементов.
Вы пытаетесь заставить вертикальное выравнивание
работать так, как вам нужно? Поскольку вертикальное выравнивание
— это атрибут, который имеет много сложных взаимодействий и множество вариантов использования, мы ищем тематические исследования, чтобы написать больше статей об этом атрибуте. Следовательно, если у вас есть вопрос относительно вертикального выравнивания
, оставьте его нам в комментариях ниже! Если это что-то, что мы не рассмотрели в наших статьях, мы сделаем это, чтобы ответить на ваш вопрос.
Отдельное спасибо сайту placekittens.com за изображения котят в этом посте! При создании этого изделия не пострадал ни один котенок.
Выравнивание в CSS: текст и вертикальное выравнивание
Фото на обложке Алекса Вонга.
Это начало долгого пути, чтобы узнать, как добиться того, чтобы все, наконец, правильно выровнялось на наших веб-страницах.
Сегодняшнее руководство посвящено двум свойствам: text-align
и vertical-align
. Выравнивание текста — очень простое свойство, которое новички часто изучают первым. Вертикальное выравнивание кажется его простым контрапунктом, но может быть обманчивым из-за его сложных правил и является ранним камнем преткновения для многих.
Цель text-align
для выравнивания текста по горизонтали . Поэкспериментируйте с ним:
Если вы уже работали с каким-либо текстовым редактором, эти параметры будут поразительно знакомы.
Скоро появятся дополнительные параметры, например, start
и end
, которые зависят от направления текста, выравнивание по определенному символу (например, десятичной дроби) и justify-all строка текста для выравнивания. Они сильно различаются по поддержке на дату создания (август 2019 г.), так как в настоящее время они все еще являются черновиками редактора с точки зрения спецификации, поэтому обязательно проверьте таблицы совместимости, прежде чем использовать что-либо необычное.
Ссылки и дополнительная литература для выравнивания текста:
- MDN: выравнивание текста
Как вы могли догадаться по названию, назначение vertical-align
— выравнивание текста по вертикали . В примере ниже я выделил некоторые ключевые фразы, связанные с растениями; кнопки переключают свойство вертикального выравнивания этих основных моментов.
Если вы применяете вертикальное выравнивание к элементам display: inline
или display: inline-block
, то вы сможете выровнять их друг с другом. Вы можете выровнять все, что может перемещаться по горизонтали, если для него установлено допустимое свойство отображения. Текст, изображения, значки, кнопки, элементы ввода...
При использовании
вертикального выравнивания
для встроенных или встроенных блочных элементов выравнивание выполняется относительно родственных элементов в горизонтальной строке, а не родительского элемента.Выравнивание по вертикали также работает с таблицами (а также с элементами, для которых установлено отображение table-cell). Вот пример таблицы для экспериментов:
Важное примечание:
⚠️ Вертикальное выравнивание не выравнивает блочные элементы.
⚠️ Итак, если вы думаете... "Подождите, вертикальное выравнивание у меня не сработало! Почему вы лжете?", загляните в свойство display
вашего элемента. Вертикальное выравнивание не является универсальным способом выравнивания всего. Поскольку элементы уровня блока не могут иметь одноуровневого элемента в потоке на той же строке, что и они, они не будут выровнены. Блочные элементы 9Однако 0134 может наследовать свойство вертикального выравнивания дочерних элементов; это не совсем недопустимо, просто бесполезно для позиционирования.
Если вы помните дни табличного макета (кстати, waaaay назад... надеюсь), вы, возможно, помните атрибут valign
в ячейках таблицы. Предполагается, что свойство вертикального выравнивания
было создано специально для имитации поведения этого атрибута.
тл;др
Используйте это для вертикального выравнивания текста, изображений, значков или других элементов, которые отображаются «в линию» друг с другом по горизонтали. Если вы не используете его в таблице, вертикальное выравнивание изменяет поведение элементов относительно друг к другу , а не по отношению к их родительскому элементу.
Ссылки и дополнительная литература для вертикального выравнивания:
- MDN: вертикальное выравнивание
- Вертикальное выравнивание: все, что вам нужно знать (CSS)
- Понимание вертикального выравнивания, или «Как (не) центрировать содержимое по вертикали»
Вот изящный трюк с использованием вертикального выравнивания. Я больше не использую его в производстве, поскольку flexbox хорошо поддерживается, но это все еще хорошее исследование того, как работает вертикальное выравнивание.
Этот трюк является расширением того факта, что вертикальное выравнивание работает для центрирования встроенных блоков друг относительно друга .
У нас есть:
- Внешний контейнер, больший, чем внутренний контейнер
- Внутренний контейнер, который мы хотим центрировать по вертикали
- Невидимый контейнер "высокий призрак", который помогает только в выравнивании
Важные детали:
- Высокий призрак и внутренний контейнер оба
отображение: встроенный блок
ивыравнивание по вертикали: посередине
- Высокий призрак на 100% выше (вот почему он высокий!)
- Высокий призрак имеет нулевую ширину, чтобы убедиться, что он не нарушает выравнивание (он невидим)
Невидимый выравнивающий элемент устанавливает как высоту своего родителя с height: 100%
, поэтому все, что выровнено по вертикали с «высоким призраком», произойдет для выравнивания с его родительским блочным элементом.