Как сделать надпись по центру блока в html

Добавил пользователь Alex
Обновлено: 04.10.2024

Эта статья будет полезна для тех, кто только начинает свой путь в веб-разработке. Выравнивание элемента по центру - достаточно распространенная задача, но каждый из нас все равно когда-то испытывал связанные с этим затруднения и искал оптимальные способы выравнивания по центру одного блока относительно другого c помощью Google или Stackoverflow. Несомненно, это простая задача. Однако, наличие большого количества элементов и стилей зачастую приводит к обидным ошибкам.

Ниже мы разберем несколько способов выравнивания блока по центру.

Text-align

Метод text-align: center, пожалуй самый распространенный. Обычно он используется для горизонтального выравнивания по центру текста. Кроме того, он успешно используется и для div .

Как это делается?

  1. вокруг элемента, который нужно выровнять по центру, создайте родительский блок (обычно он называется wrapper или container),
  2. задайте для этого (родительского) элемента CSS-свойство text-align: center,
  3. для выравниваемого элемента создайте свойство display: inline-block.

В примере для синего квадрата есть блок-обертка blue-square-container , для которого определено выравнивание текста по центру text-align: center, а для самого квадрата есть свойство display: inline-block.

Следует обратить внимание на то, что по умолчанию для свойства display div получает значение block и поэтому занимает всю доступную ширину 100% и не выравнивается по правилам строчных элементов.

В свою очередь для inline-block элемента:

  1. ширина определяется содержимым или установленным фиксированным значением,
  2. выравнивание относительно родительского блока происходит по правилам, установленным для строчных элементов.

Margin: auto

Другой распространенный способ центрирования блока по горизонтали связан с автовырвниванием левого и правого внешних отступов (например: margin: 0 auto). В этом случае не имеет значения: есть ли родительский элеменет и что с ним происходит.

Мы просто применяем margin: 0 auto к желтому блоку, и это будет работать, если у выравниваемого элемента есть фиксированная ширина.

margin: 0 auto - короткая запись CSS-свойств, определяющая верхний и нижний внешние отступы равными 0, и автоматическое определение ширины для левого и правого внешних отступов.

Важно, чтобы для выравниваемого элемента была установлена фиксированная ширина (в нашем случае для желтого квадрата width: 100px), без нее браузер не сможет рассчитать значения правого и левого внешних отступов, чтобы установить элемент по центру.

Вместо 0 можно установить любые необходимые значения для верхнего и нижнего внешних отступов.

Еще один интересный прием - установить значение auto только для margin-left или только для margin-right, что позволит сместить элемент, соответственно, вправо или влево (попробуйте).

Абсолютное позиционирование

Элемент с абсолютным позиционированием можно разместить в любом месте страницы, но с одной особенностью.

Элемет с абсолютным позиционированием выпадает из потока страницы. То есть остальные элементы страницы ведут себя так, будто абсолютно позиционированного элемента вовсе не существует.

Почему это важно?

Потому, что при некорректном использовании данного свойства, можно спровоцировать наложение элементов.

Если мы хотим просто разместить блок по центру, как в двух предыдущих примерах, нужно выполнить три действия:

  1. установить элементу свойство position: absolute,
  2. применить свойство left: 50%,
  3. установить margin-left равным половине ширины элемента с отрицательным значением.

В данном случае, для этого примера создан зеленый квадрат с такими же размерами, как и в остальных случаях, то есть ширина равна 100px.

Свойства position: absolute и left: 50% указывают браузеру на необходимость сместить элемент на 50% влево. Но в этом случае на отметке 50% будет находиться левый край центрируемого элемента, а не его середина.

Наконец, для того, чтобы выровнять элемент по центру, мы смещаем его влево на половину ширины, за счет margin-left с отрицательным значением.

Следует помнить, что расчет положения элемента с абсолютным позиционированием осуществляется относительно любого из родительских элементов с установленным свойством “position: relative” или относительно страницы при их отсутствии.

Transform/translate

До сих пор мы изучали методы выравнивания элементов по горизонтали. Но что делать, если элемент должен находиться точно в центре страницы (как по горизонтали, так и по вертикали).

Проделаем это с красным квадратом из второго примера (смотри выше).

Хотя мы все еще применяем абсолютное позиционирование и margin-left: 50%, появляются и два новых CSS-свойства.

Устанавливая верхний внешний отступ равным 50%: margin-top: 50%, мы смещаем верхний край элемента к центру. Но, аналогично предыдующему примеру, в центре по вертикали оказывается верхний край элемента, а не его середина.

Вот почему нам нужно еще одно свойство, которое называется transform

С помощью transform можно делать разные крутые штуки, в том числе: смещение, ротацию, масштабирование. Но в данном случае нас интересует именно смещение (translate).

Создаем для центрируемого элемента свойство transform: translate(-50%, -50%), и…

Наш красный квадрат находится в центре как по горизонтали, так и по вертикали страницы.

Этот метод часто используется в адаптивной верстке и не требует определения фиксированных размеров элемента, как в примере с абсолютным позиционированием.

Flexbox

Flexbox - одна из популярных моделей позиционирования и выравнивания элементов на странице.

Если Вы не знакомы с flexbox, воспользуйтесь Flexbox Froggy - это увлекательный и веселый интерактивный способ изучения всех возможностей модели flexbox.

Для того, чтобы разместить элемент в центре (по горизонтали и вертикали) с помощью flexbox, нужно выполнить следующие действия:

  1. HTML, body и родительский контейнер должны иметь высоту 100%,
  2. для родителського контейнера нужно установить display: flex,
  3. так же для родительского контейнера нужно установить align-items: center,
  4. еще для родительского контейнера нужно установить justify-content: center.

Устанавливая display: flex, мы создаем flex-контейнер.

align-items: center определяет вертикальное выравнивание всех дочерних элементов по центру родительского.

justify-content: center по действию подобен предыдущему свойству, но работает в другом направлении - горизонтальном.

Этот метод хорош тем, что отлично подходит для адаптивной верстки и не требует вычисления внешних отступов.

БлогNot. О выравнивании элементов по центру средствами HTML5 и CSS3

О выравнивании элементов по центру средствами HTML5 и CSS3

Заметим, что в самом по себе HTML5 "блочных" и "строчных" элементов, по сути, нет. Роль элементов теперь, пожалуй, чисто логическая, а визуальная структура оформления, в которой есть "блочные" и "строчные" элементы, относится только к стилям CSS.

  • Блочный элемент (block) - то, что создает разрыв строки перед тегом и после него. Может содержать внутри себя элементы любого типа. Обычно блочные элементы не размещают внутри строчных, исключение - тег картинки .
  • Строчный (встроенный) элемент (inline) - не создаёт разрыва строки при добавлении. Строчные элементы - потомки блочных. Обычно они игнорируют верхние и нижние отступы. Задать размеры строчных элементов с помощью CSS нельзя, можно лишь увеличить расстояние между соседними элементами по горизонтали с помощью горизонтальных полей и отступов.

С помощью CSS элементы "взаимопревращаемы":

Теперь типовые ситуации, когда хочется выровнять, не пользуясь отсутствующими в стандарте HTML5 атрибутами align / valign .

1. Горизонтальное выравнивание по центру страницы, для блока задана ширина

Работает, если элемент блочный. Если он строчный - задать дополнительно в стиле display: block;

1


1

2. Горизонтальное выравнивание содержимого по центру страницы, для блока не задана ширина

2


2

3. Выравнивание по центру родительского блока, если для блока с контентом задана ширина

Ширина внешнего блока outbox задана относительно ширины окна, и ширина внутреннего inbox - относительно родителя.

Затем мы устанавливаем смещение дочернего блока влево на половину его ширины.

Фоновые цвета заданы просто чтобы блоки были видны.

3


3

4. Горизонтальное выравнивание по центру родительского блока, если для блоков не задана ширина

В классе родительского блока задано расположение содержимого по центру, в классе дочерних - расположение в ряд по горизонтали и убран правый отступ между блоками.

4


4

5. Вертикальное выравнивание текста в строчном элементе

Если текст занимает одну строчку, например, это кнопка или пункт меню.

5


5

6. Вертикальное выравнивание блока в родительском блоке

6


6

7. Горизонтальное и вертикальное выравнивание табличного типа с использованием вложения блоков

Весь контент должен находиться во внутреннем блоке.

7


7

8. Выравнивание блока с заданными шириной и высотой по центру родительского блока

8


8

9. Абсолютное позиционирование пустого элемента с заданными размерами по центру страницы или блока

9


9

10. Абсолютное позиционирование непустого элемента с заданными размерами по центру страницы или блока

Здесь и в п. 9 существенно используется такая возможность современных стилей как CSS3-трансформация.

10


10

11. Абсолютное позиционирование блока по центру страницы

11


11

12. Абсолютное позиционирование блока по центру родительского блока

12


12

Для проверки кода везде использовался такой документ HTML5, кодировка Юникода UTF-8:

Выравнивание по центру блока внутри блока

На этом уроке, вы узнаете несколько способов выравнивания по центру блока внутри блока по вертикали и горизонтали. В качестве блоков могут быть любые фигуры.

В нашем примере, мы будем центрировать картинку (блочный элемент) внутри прямоугольника. Для демонстрации выравнивания по центру несколькими способами, мы создадим три прямоугольника, с картинками внутри.

Конечный результат, независимо от способа, будет выглядеть так:

Выравнивание блока внутри блока.

Общие стили для всех способов:

Зададим позицию блока относительной по отношению к окну браузера. Это в дальнейшем даст возможность блоку-дочке задать абсолютное позиционирование уже к блоку-родителю.

.block width: 250px;
height: 300px;
background-color: red;
position: relative;

Исходные размеры картинки-иконки такие же, как и ширина красного прямоугольника, уменьшим её максимальные размеры.

.icon max-width: 60%;
max-height: 60%;
>

HTML-разметка у всех способов одинаковая, отличаться будут только стили.

Способ первый




Положение изображения автоматически определяет сам браузер с помощью свойства margin: auto.

.first position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
margin: auto;
>

Способ второй




Этот способ выравнивания по центру никогда еще не подводил. Вы спросите, зачем нужно последнее свойство transform? Если убрать transform, то иконка не будет стоять точно по центру, поскольку не учитываются её собственные размеры. Центр иконки не совпадает с центром блока-родителя. Мы двигаем иконку назад и вниз на половину её собственного размера.

.second position: absolute;
top: 50%;
left: 50%;
z-index: 1;
transform: translate(-50%, -50%);
>

Способ третий

Отличается от двух предыдущих тем, что класс flex задан блоку div, а не картинке.




.flex display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
>

А что будет, если после тега img, всем трем блокам добавить текст?



Ольга Смирнова

Консультант по кредитам

У первых двух способов, параграфы с текстом окажутся наверху, несмотря на то, что в HTML-коде, они стоят после изображения. Для перемещения текста под картинку, потребуется обернуть теги img, h2 и p в ещё один блок div и прописать ему свойство text-align: center.

Выравнивание блока внутри блока.

Однако с третьим способом выравнивания на флексах, не возникает таких проблем, конструкция не нуждается в дополнительном оберточном блоке. Параграфы с текстом встают точно посередине и после изображения и там где надо.

Выравнивание блока внутри блока.

Заключение

Лишний раз можно убедиться в продвинутости и удобстве верстки на флексах. Советую всем тем верстальщикам, кто еще не верстает на флексах, наконец-то начать использовать флексы. Оправдание, почему вы не верстаете на флексах, может быть только одно – экзотическое желание заказчика, угодить пользователям "древних" браузеров. В остальных же случаях, нет ни одной причины почему не нужно верстать на флексах.

Если вы не знаете с чего начать уже зарабатывать свои первые деньги, то лучшим вариантом будет - научиться верстать лендинги, с помощью этого видеокурса "О создании лендинга под ключ".


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Для горизонтального выравнивания текста по центру используется стилевое свойство text-align со значением center . Чтобы такое выравнивание работало в нужных местах, можно создать класс с именем center и добавлять его к желаемым элементам (пример 1).

Пример 1. Выравнивание текста

Выравнивание по центру

Современная образовательная парадигма, ратифицируя приоритет личностной ориентации педагогического процесса, в ходе которого осуществляется развитие природных задатков, заложенных в каждом индивидууме, требует переосмысления существующих традиционных форм и методов общеобязательного образования.

Рассмотрим несколько примеров по выравниванию текста внутри контейнера. Начнём с вываривания по левому краю, которое происходит автоматически.

text-align: left

Рассмотрим HTML код контейнера с текстом: Контейнер div по умолчанию является блочным элементом, поэтому его ширина составляет 100% от родительского элемента (элемента, в котором он находится). Поэтому в этой статье его удобно применять - текст будет перемещаться по контейнеру в зависимости от значения свойства text-align. Результат будет такой:

Выравнивание по левому краю не всегда делается по умолчанию. К примеру, в некоторых языках написание слов происходит справа налево. Если текст в контейнере написан на таком языке, то по умолчанию выравнивание будет по правому краю.

В примере выше использован CSS код внутри атрибута style тега div. Но можно вынести этот код отдельно:

text-align: right

Теперь посмотрим как принудительно сделать выравнивание по правому краю Текст будет выравнен по правому краю контейнера:

text-align: center

Существует возможность выравнить текст по центру. Для этого необхоимо использовать значение "center" Текст будет выравнен по центру контейнера:

text-align: justify

Стоит упомянуть о возможности растянуть текст равномерно на всю ширину контейнера. Сделать это можно с помощью значения "justify". Но чтобы продемонстрировать это, зададим два контейнера с ограниченной шириной (max-width: 250px). В одном контейнере оставим стандартные настройки выравнивания, а во втором пропишем text-align:justify: В браузере первый контейнер будет содержать текст без растягивания на всю ширину. Во втором контейнере текст будет растянут - пробелы между словами будут иметь разную ширину, чтобы заполнить весь контейнер текстом:

Тише, мыши, кот на крыше, а котята ещё выше. Кот пошёл за молоком, а котята кувырком. Кот пришёл без молока, а котята ха-ха-ха.

Тише, мыши, кот на крыше, а котята ещё выше. Кот пошёл за молоком, а котята кувырком. Кот пришёл без молока, а котята ха-ха-ха.

В примере выше использовано свойство "max-width", а не "width", потому что оно не мешает контейнеру быть уже, чем заданное значение. Это удобно, если пользователь просматривает сайт с мобильного телефона, ширина которого менее зданного значения. Благодаря "max-width" вёрстка сайта не сломается - страница не будет уходить за пределы экрана.

Читайте также: