Содержание

Вертикальное выравнивание внутри блочного элемента

Постановка задачи: необходимо задать вертикальное выравнивание для 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-контейнера следующим образом:


.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
    
​ дел { поле: 0px авто; ширина: 400 пикселей; }

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, вы можете использовать тег

или использовать свойство CSS. Чтобы продолжить, выберите нужный вариант и следуйте инструкциям.

  • Использование тегов
    .
  • Использование свойства таблицы стилей.
  • Примеры выравнивания текста и объектов по центру.

Использование тегов

Один из способов центрировать текст или поместить его в середину страницы — заключить его в теги

.

 
Отцентрируйте этот текст!

Использование приведенного выше примера HTML-кода дает следующий результат:

Центрировать этот текст!

Примечание

Тег

теперь считается устаревшим. Хотя он все еще может работать, ожидается, что он будет удален в пользу использования CSS. Мы рекомендуем вам использовать метод таблицы стилей (показанный ниже) для центрирования текста в 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.