Вертикальное выравнивание внутри блочного элемента
Постановка задачи: необходимо задать вертикальное выравнивание для 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> (на картинке ниже показан серой линией) и получаем:
Зададим для всех элементов <span></span> vertical-align:middle.
Что ж, одну строку мы таким образом отцентрировали. А что, если надо несколько строк? И тут проблем нет. Надо лишь для текстовых элементов задать display:inline-block:
Если нам не важна совместимость со старыми версиями IE, то элемент <span></span> мы можем удалить, а его стили заменить на:
Стоит отметить несколько моментов:
- К элементам, которые выравниваются, нельзя применять свойство float.
- Между соседними inline-block элементами всегда есть расстояние, поэтому если их надо прижать друг к другу, то для внешнего блока надо задать font-size:0px; а у самих элементов восстановить, задав нужное значение.
- Для внутренних элементов таким образом можно задавать как одинаковые значения (top, bottom или middle), так и разные.
Плюсы:
- Простота;
- Кроссбраузерность;
- Выравнивать элементы можно как по центру, так и в любом другом положении;
- Подходит как для одной строки, так и для нескольких. Также, т.к. элемент имеет display:inline-block, он может содержать текст, графику (фон, картинка) и любой другой элемент.
Минусы:
- Приходится добавлять дополнительный элемент;
- При использовании псевдоэлемента :after, теряется поддержка старыми версиями IE.
← Назад в раздел
Выравнивание элементов. align-items и align-self
Последнее обновление: 18.04.2017
Свойство align-items
Свойство align-items также выравнивает элементы, но уже по поперечной оси (cross axis) (при расположении в виде строки по вертикали, при расположении в виде столбца — по горизонтали). Это свойство может принимать следующие значения:
stretch: значение по умолчанию, при котором flex-элементы растягиваются по всей высоте (при расположении в строку) или по всей ширине (при расположении в столбик) flex-контейнера
flex-start: элементы выравниваются по верхнему краю (при расположении в строку) или по левому краю (при расположении в столбик) flex-контейнера
flex-end: элементы выравниваются по нижнему краю (при расположении в строку) или по правому краю (при расположении в столбик) flex-контейнера
center: элементы выравниваются по центру flex-контейнера
baseline: элементы выравниваются в соответствии со своей базовой линией
Выравнивание при расположении в строку:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Flexbox в CSS3</title> <style> .flex-container { display: flex; border:1px #ccc solid; height:5em; } .flex-start{ align-items: flex-start; } .flex-end{ align-items: flex-end; } .center{ align-items: center; } .baseline{ align-items: baseline; } .flex-item { text-align:center; font-size: 1em; padding: 1.2em; color: white; } .largest-item{ padding-top:2em; } .color1 {background-color: #675BA7;} .color2 {background-color: #9BC850;} .color3 {background-color: #A62E5C;} .color4 {background-color: #2A9FBC;} </style> </head> <body> <h4>Flex-start</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Flex-end</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Center</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Baseline</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> </html>
Аналогично свойство работает при расположении в столбик.
.flex-container { display: flex; border:1px #ccc solid; flex-direction:column; width:12em; }
Свойство align-self
Свойство align-self позволяет переопределить значение свойства align-items
для одного элемента.
Оно может принимать все те же значения плюс значение «auto»:
auto: значение по умолчанию, при котором элемент получает значение от свойства
align-items
, которое определено в flex-контейнере. Если в контейнере такой стиль не определен, то применяется значениеstretch
.stretch
flex-start
flex-end
center
baseline
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Flexbox в CSS3</title> <style> . flex-container { display: flex; border:1px #ccc solid; justify-content: space-between; align-items: stretch; height:12em; } .flex-item { text-align:center; font-size: 1em; padding: 1.2em; color: white; } .item1 {background-color: #675BA7; align-self: center; } .item2 {background-color: #9BC850; align-self: flex-start;} .item3 {background-color: #A62E5C; align-self: flex-end;} .item4 {background-color: #2A9FBC; align-self: center;} </style> </head> <body> <h4>Align-self</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> </html>
Здесь для flex-контейнера задано растяжение по высоте с помощью значения align-items: stretch;
. Однако каждый из элементов переопределяет это поведение:
НазадСодержаниеВперед
html — Как центрировать тело на странице?
Я пытаюсь центрировать элемент body на своей HTML-странице.
По сути, в CSS я задал элементу body значение display: inline-block;
так, чтобы его ширина равнялась его содержимому. Это прекрасно работает. Однако margin: 0px auto;
не центрирует его на странице.
Кто-нибудь знает, как это исправить? Я хочу, чтобы большой синий квадрат располагался по центру страницы, а не плавал влево, как сейчас.
Вот мой CSS:
body { отображение: встроенный блок; поле: 0px авто; выравнивание текста: по центру; }
- html
- css
- центр
- центрирование
3
корпус { ширина:80%; поле слева: авто; поле справа: авто; }
Это будет работать в большинстве браузеров, включая IE.
1
Также применить text-align: center; в элементе html так:
html { выравнивание текста: по центру; }
Однако лучшим подходом является наличие внутреннего контейнера div, который будет централизованным, а не телом.
8
Вы должны указать ширину тела, чтобы оно располагалось по центру страницы.
Или поместите все содержимое в div и отцентрируйте его.
<тело> <дел> jhfgdfjh
4
Для тех, кто знает ширину do , вы можете сделать что-то вроде
div { максимальная ширина: ???px; //пкс,% поле слева: авто; поле справа: авто; }
Я также согласен не устанавливать text-align:center для тела, потому что это может испортить остальную часть вашего кода, и вам, возможно, придется отдельно установить text-align:left для многих вещей либо тогда, либо в будущем.
Использование гибкого макета — еще один вариант. Добавьте в свой CSS:
html { дисплей: гибкий; выравнивание содержимого: по центру; }
Проверено в Chrome, Edge, Firefox.
Дополнительную информацию можно найти в ссылках на MDN и множестве онлайн-руководств (это кажется удобным, поскольку оно организовано вокруг ролей контейнера/элемента в гибком макете).
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Как центрировать текст в HTML
Обновлено: 01. 05.2023 автором Computer Hope
Центрирование текста обычно используется для заголовка веб-сайта или документа. Чтобы центрировать текст с помощью HTML, вы можете использовать тег
- Использование тегов
. - Использование свойства таблицы стилей.
- Примеры выравнивания текста и объектов по центру.
Использование тегов
Один из способов центрировать текст или поместить его в середину страницы — заключить его в теги
Отцентрируйте этот текст!
Использование приведенного выше примера HTML-кода дает следующий результат:
Центрировать этот текст!
Примечание
Тег
Использование свойства таблицы стилей
Вы можете центрировать текст на веб-сайте с помощью CSS, указав свойство text-align элемента, который должен быть центрирован.
Центрирование нескольких блоков текста
Если у вас есть только один или несколько блоков текста по центру, добавьте атрибут стиля к открывающему тегу элемента и используйте свойство text-align. В приведенном ниже примере мы добавили атрибут и свойство к тегу
.
Отцентрируйте этот текст!
Для свойства text-align установлено значение center, чтобы указать, что элемент расположен по центру в середине страницы или содержит div.
Несколько блоков текста
Если у вас много блоков текста для центрирования, используйте CSS внутри тегов в заголовке или во внешней таблице стилей. См. приведенный ниже пример кода, как настроить центрирование всего текста в тегах
.<стиль> п { выравнивание текста: по центру } стиль>
Текст каждого набора тегов
располагается по центру страницы. Если вы хотите, чтобы некоторые абзацы были центрированы, а другие нет, вы можете создать класс стиля, как показано в приведенном ниже коде.<стиль> .центр { выравнивание текста: по центру } стиль>
Если вы создаете центральный класс, как показано в приведенном выше примере, абзац можно центрировать с помощью приведенного ниже кода, который «вызывает» центральный класс.
Отцентрируйте этот текст!
Кончик
После создания класса его можно применить к любому тегу HTML, содержащему слова, изображения и большинство других объектов. Например, если вы хотите, чтобы заголовок располагался по центру, вы можете добавить class=»center» к тегу
или другому тегу заголовка.
Примеры выравнивания текста и объектов по центру
Ниже приведены примеры использования атрибута стиля и свойства text-align для центрирования текста и объектов на веб-странице.
Центрирование текста в абзаце
HTML-код:
Пример выравнивания текста по центру в абзаце.
Результат:
Пример выравнивания текста по центру в абзаце.
Центрирование изображения
Код HTML:
Результат:
Центрирование гиперссылки URL
Код HTML:
домашняя страница Computer Hope
Результат:
Домашняя страница Computer Hope
Центрирование текста в теге заголовка
Код HTML:
Пример выравнивания текста по центру в теге заголовка
Результат:
Пример выравнивания текста по центру в теге заголовка
Центрирование текста в теге
Код HTML:
Пример предложения по центру в теге div.