Содержание

Как выровнять текст при помощи HTML

Серёжа СыроежкинКопирайтер

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

Существует три способа выровнять текст с помощью HTML-кода:

  • При помощи атрибута тега p;
  • Выравнивание по центру при помощи тега center;
  • Выравнивание при помощи блоков div.

Выравнивание по краям HTML

По краям текст можно выровнять как при помощи тега p, так и при помощи тега div. Для этого используется атрибут align:

  • align=”right” – по правому краю;
  • align=”left” – по левому краю;

Например:

<p align="right">Конструктор сайтов "Нубекс"</p>
<div align="left">Конструктор сайтов "Нубекс"</div>

Здесь первое предложение выравнивается по правому краю при помощи тега p, второе – по левому краю при помощи тега

div.

Выравнивание по ширине HTML

По ширине текст также может быть выравнен при помощи тегов p и div:

<p align="justify">Конструктор сайтов "Нубекс"</p>
<div align=" justify ">Конструктор сайтов "Нубекс"</div>

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

Выравнивание по центру с помощью HTML, как вы уже догадались, можно осуществить всеми тремя вышеуказанными способами:

<p align="center">Конструктор сайтов "Нубекс"</p>
<div align=" center ">Конструктор сайтов "Нубекс"</div>
<center>Конструктор сайтов "Нубекс"</center>

Выравнивание CSS

Конечно, более «красиво» делать выравнивание с помощью CSS. Рассмотрим способ выравнивания текста при помощи CSS:

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Выравнивание текста с помощью CSS</title>
  <style>
  . right {
  text-align: right;
  }
  </style>
 </head>
 <body>
<div>Конструктор сайтов "Нубекс"</div>
 </body>
</html>

Здесь происходит выравнивание текста по правому краю при помощи атрибута CSS text-align.

Смотрите также:

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

В CSS есть всего несколько техник центрирования элементов. Если их знать, то большинство задач решаются просто.

Горизонтальное

text-align

Для центрирования инлайновых элементов – достаточно поставить родителю text-align: center :

Для центрирования блока это уже не подойдёт, свойство просто не подействует. Например:

margin: auto

Блок по горизонтали центрируется margin: auto :

В отличие от width/height , значение auto для margin само не появляется. Обычно margin равно конкретной величине для элемента, например 0 для DIV . Нужно поставить его явно.

Значение margin-left:auto/margin-right:auto заставляет браузер выделять под margin всё доступное сбоку пространство. А если и то и другое auto , то слева и справа будет одинаковый отступ, таким образом элемент окажется в середине. Детали вычислений описаны в разделе спецификации Calculating widths and margins.

Вертикальное

Для горизонтального центрирования всё просто. Вертикальное же изначально не было предусмотрено в спецификации CSS и по сей день вызывает ряд проблем.

Есть три основных решения.

position:absolute + margin

Центрируемый элемент позиционируем абсолютно и опускаем до середины по вертикали при помощи top:50% :

Это, конечно, не совсем центр. По центру находится верхняя граница. Нужно ещё приподнять элемент на половину своей высоты.

Высота центрируемого элемента должна быть известна. Родитель может иметь любую высоту.

Если мы знаем, что это ровно одна строка, то её высота равна line-height .

Приподнимем элемент на пол-высоты при помощи margin-top :

При стандартных настройках браузера высота строки line-height: 1. 25 , если поделить на два 1.25em / 2 = 0.625em .

Конечно, высота может быть и другой, главное чтобы мы её знали заранее.

Можно аналогично центрировать и по горизонтали, если известен горизонтальный размер, при помощи left:50% и отрицательного margin-left .

Одна строка: line-height

Вертикально отцентрировать одну строку в элементе с известной высотой height можно, указав эту высоту в свойстве line-height :

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

Таблица с vertical-align

У свойства vertical-align, которое управляет вертикальным расположением элемента, есть два режима работы.

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

Его возможные значения:

baseline Значение по умолчанию. middle , top , bottom Располагать содержимое посередине, вверху, внизу ячейки.

Например, ниже есть таблица со всеми 3-мя значениями:

Обратим внимание, что в ячейке с vertical-align: middle содержимое находится по центру. Таким образом, можно обернуть нужный элемент в таблицу размера width:100%;height:100% с одной ячейкой, у которой указать vertical-align:middle , и он будет отцентрирован.

Но мы рассмотрим более красивый способ, который поддерживается во всех современных браузерах, и в IE8+. В них не обязательно делать таблицу, так как доступно значение display:table-cell . Для элемента с таким display используются те же алгоритмы вычисления ширины и центрирования, что и в TD . И, в том числе, работает vertical-align :

Этот способ замечателен тем, что он не требует знания высоты элементов.

Однако у него есть особенность. Вместе с vertical-align родительский блок получает табличный алгоритм вычисления ширины и начинает подстраиваться под содержимое. Это не всегда желательно.

Чтобы его растянуть, нужно указать width явно, например: 300px :

Можно и в процентах, но в примере выше они не сработают, потому что структура таблицы «сломана» – ячейка есть, а собственно таблицы-то нет.

Это можно починить, завернув «псевдоячейку» в элемент с display:table , которому и поставим ширину:

Если дополнительно нужно горизонтальное центрирование – оно обеспечивается другими средствами, например margin: 0 auto для блочных элементов или text-align:center на родителе – для других.

Центрирование в строке с vertical-align

Для инлайновых элементов ( display:inline/inline-block ), включая картинки, свойство vertical-align центрирует сам инлайн-элемент в окружающем его тексте.

В этом случае набор значений несколько другой:

Это можно использовать и для центрирования, если высота родителя известна, а центрируемого элемента – нет.

Допустим, высота внешнего элемента 120px . Укажем её в свойстве line-height :

Работает во всех браузерах и IE8+.

Свойство line-height наследуется, поэтому надо знать «правильную» высоту строки и переопределять её для inner .

Центрирование с vertical-align без таблиц

Если центрирование должно работать для любой высоты родителя и центрируемого элемента, то обычно используют таблицы или display:table-cell с vertical-align .

Если центрируются не-блочные элементы, например inline или inline-block , то vertical-align может решить задачу без всяких таблиц. Правда, понадобится вспомогательный элемент (можно через :before ).

  • Перед центрируемым элементом помещается вспомогательный инлайн-блок before , занимающий всю возможную высоту.
  • Центрируемый блок выровнен по его середине.

Для всех современных браузеров и IE8 можно добавить вспомогательный элемент через :before :

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

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

    Убрать лишний пробел между div и началом inner , будет

Центрирование с использованием модели flexbox

Данный метод поддерживается всеми современными браузерами.

  • Не требуется знания высоты центрируемого элемента.
  • CSS чистый, короткий и не требует дополнительных элементов.
  • Не поддерживается IE9-, IE10 поддерживает предыдущую версию flexbox.

Итого

Обобщим решения, которые обсуждались в этой статье.

Для горизонтального центрирования:

  • text-align: center – центрирует инлайн-элементы в блоке.
  • margin: 0 auto – центрирует блок внутри родителя. У блока должна быть указана ширина.

Для вертикального центрирования одного блока внутри другого:

Если размер центрируемого элемента известен, а родителя – нет

Родителю position:relative , потомку position:absolute; top:50% и margin-top:- . Аналогично можно отцентрировать и по горизонтали.

Если нужно отцентрировать одну строку в блоке, высота которого известна

Поставить блоку line-height: . Нужны конкретные единицы высоты ( px , em …). Значение line-height:100% не будет работать, т.к. проценты берутся не от высоты блока, а от текущей line-height .

Высота родителя известна, а центрируемого элемента – нет.

Поставить line-height родителю во всю его высоту, а потомку поставить display:inline-block .

Высота обоих элементов неизвестна.

  1. Сделать элемент-родитель ячейкой таблицы при помощи display:table-cell (IE8) или реальной таблицы, и поставить ему vertical-align:middle . Отлично работает, но мы имеем дело с таблицей вместо обычного блока.
  1. Решение со вспомогательным элементом outer:before и инлайн-блоками. Вполне универсально и не создаёт таблицу.
  2. Решение с использованием flexbox.

Задача верстки, которая очень часто встречается – это выравнивание текста по вертикали в блоке div.

Если с выравниванием текста по горизонтали, проблем обычно не возникает (используем свойство text-align:center и все будет хорошо), то с выравниванием по вертикали все немного сложнее.

Есть одной свойство в CSS, которое называется vertical-align. Казалось бы, используя его можно решить все проблемы. Но не тут-то было.

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

Для блочных элементов свойство vertical-align не работает.

Есть два способа, как можно выйти из этой ситуации:

Для тех, кто предпочитает все смотреть в видео:

Для тех, кто любит текст, читайте ниже способ решения этой проблемы.

Способ А. Как одно из решений, можно разместить текст не в элементе div, а в ячейке таблицы.

Способ Б. Использовать своство display:table-cell;

Все было бы хорошо, но старые браузеры не поддерживают display:table-cell, особенно IE с версии 7 и ниже.

Можно, конечно, наплевать на эти старые браузеры и выравнивать текст так. Доля браузера IE7 на моем сайте, по статистике за 1 квартал 2013 года, следующая:

Это меньше чем пол процента от всех посещений. В будущем этот процент будет еще более снижаться.

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

Кроме того, есть ситуации, в которых можно обойтись вообще без использования display:table-cell.

Ситуация 1. Выравнивание одной строки текста.

Рассмотрим простой пример.

Строка текста располагается по верхнему краю. Т.к. у нас всего одна строка текста, то для выравнивания можно воспользоваться самым простым способом: это добавление свойства line-height со значением равным высоте элемента div, в котором текст находится.

Этот способ хорошо работает, когда у вас всего одна строка с текстом.

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

Этот вариант решения предусматривает использование свойства position:absolute для дочернего блока, абсолютного его позиционирования относительно родительского блока с position:relative.

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

Как видите, такая простая задача, как выравнивание текста по центру, оказалась не такой простой на практике.

Приветствую вас на сайте Impuls-Web!

Делая верстку страницы, вы неизбежно столкнетесь с необходимостью сделать выравнивание текста по вертикали css, и у начинающих веб-разработчиков это может вызвать некоторые сложности.

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

Навигация по статье:

Свойство для вертикального выравнивания vertical-align

Базовым свойством, которое позволяет сделать в CSS выравнивание по вертикали является vertical-align.

В основном для выравнивания текста по вертикали css вам понадобятся значения top, middle, bottom. Они подходят для большинства случаев.

Так, в случае если нам нужно выровнять текст в каком-то блоке, то для начала оборачиваем его в тег

и задаем для него стиль vertical-align:middle;

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

Для родительского элемента, то есть блока, в котором находится текст, мы задаем свойство display:table, а для абзаца с тексом – display:table-cell. В этом случае блок преобразуется в таблицу, а абзац в ячейку таблицы.

Выравнивание текста на CSS | Трепачёв Дмитрий

Сейчас мы с вами научимся выравнивать текст. Для этого используется свойство text-align. Текст можно выравнять по левому краю (значение left), по правому (значение right), по центру (значение center) и одновременно и по правому, и по левому краю (значение justify).

Давайте посмотрим на примерах.

Значение right

Выровняем текст в абзацах по правому краю:

<p> абзац с текстом </p> p { text-align: right; }

:

Значение center

А теперь выровняем по центру:

<p> абзац с текстом </p> p { text-align: center; }

:

Значение left

А вот значение left для абзацев можно и не ставить — они по умолчанию и так выровнены по левому краю. Однако есть элементы, которые по умолчанию стоят по центру (это, например, теги th, которые делают ячейку-заголовок таблицы). И вот для них как раз-таки и может потребоваться выравнивание по левой стороне. Сделаем это:

<table border="1"> <tr> <th>Имя</th> <th>Фамилия</th> <th>Зарплата</th> </tr> <tr> <td>Иван</td> <td>Иванов</td> <td>200$</td> </tr> <tr> <td>Николай</td> <td>Петров</td> <td>300$</td> </tr> </table> th { text-align: left; } table { width: 400px; }

:

Значение justify

Ну, и наконец выровняем текст одновременно и по правому, и по левому краю. Этот эффект можно увидеть только при наличии достаточно длинного текста:

<p> длинный текст. .. </p> p { text-align: justify; width: 300px; }

:

Практика

Скопируйте себе следующий HTML код и решите для него приведенные ниже задачи:

<h2>Главный заголовок страницы</h2> <table border="1"> <tr> <th>Продукт</th> <th>Цена</th> <th>Количество</th> </tr> <tr> <td>Яблоки</td> <td>100</td> <td>5кг</td> </tr> <tr> <td>Апельсины</td> <td>200</td> <td>6кг</td> </tr> <tr> <td>Бананы</td> <td>300</td> <td>7кг</td> </tr> </table> <h3>Второстепенный заголовок 1</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elitorire aenean a dapibus magna, ac interdum nisl. Suspendisse egetil fringilla nibh, eu commodo arcu. Donec lacinia tempor velite sed tincidunt. Aliquam porttitor nulla purus, vel vulputater ipsum faucibus sed. Phasellus sodales, lorem vel cursus vehi ante purus lacini dui, interdum fringilla massa eros ut duir. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elitorire aenean a dapibus magna, ac interdum nisl. Suspendisse egetil fringilla nibh, eu commodo arcu. Donec lacinia tempor velite sed tincidunt. Aliquam porttitor nulla purus, vel vulputater ipsum faucibus sed. Phasellus sodales, lorem vel cursus vehi ante purus lacini dui, interdum fringilla massa eros ut duir. </p> <h3>Второстепенный заголовок 2</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elitorire aenean a dapibus magna, ac interdum nisl. Suspendisse egetil fringilla nibh, eu commodo arcu. Donec lacinia tempor velite sed tincidunt. Aliquam porttitor nulla purus, vel vulputater ipsum faucibus sed. Phasellus sodales, lorem vel cursus vehi ante purus lacini dui, interdum fringilla massa eros ut duir. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elitorire aenean a dapibus magna, ac interdum nisl. Suspendisse egetil fringilla nibh, eu commodo arcu. Donec lacinia tempor velite sed tincidunt. Aliquam porttitor nulla purus, vel vulputater ipsum faucibus sed. Phasellus sodales, lorem vel cursus vehi ante purus lacini dui, interdum fringilla massa eros ut duir. </p> <h3>Второстепенный заголовок 3</h3> <table border="1"> <tr> <td>ячейка 1</td> <td>ячейка 2</td> <td>ячейка 3</td> </tr> <tr> <td>ячейка 4</td> <td>ячейка 5</td> <td>ячейка 6</td> </tr> <tr> <td>ячейка 7</td> <td>ячейка 8</td> <td>ячейка 9</td> </tr> </table>

Поставьте все заголовки h2 по правому краю.

Поставьте все заголовки h3 по центру.

Установите всем таблицам ширину в 500px.

Поставьте текст в ячейках th по левому краю.

Поставьте текст в ячейках td по центру.

Установите всем абзацам ширину в 300px.

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

Установите заголовкам h3 ширину в 300px. Поставьте их по центру. Обратите внимание на то, что центрирование будет происходить внутри этих 300px.

Выравнивание текста. Выравнивание блоков div по центру (css, div html)

Примечание:
Есть также свойство vertical-align , которое отвечает за вертикальное выравнивание.

Выравнивание текста по левому краю. Действуют по умолчанию.

Выравнивание текста по центру. Зачастую используются для заглавия статей или для вывода картинок по центру.

Выравнивание текста по правому краю.

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

Иногда text-align: justify; может не работать. Это связано с наследованием и даже с работой браузера. В целом не рекомендуется использовать этот параметр.

Вместо свойства text-align можно также использовать атрибут align , который пишется вместе с тегом. Его можно использовать у различных тегов. Например:

и

В том, что последний делает переход на новую строку (вертикальный отступ), а div не делает.

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

На рисунках видно, что при разном разрешении экрана пункты всё равно продолжают выравниваться по ширине, примыкая к боковым стенкам и делая отступы между собой — равнозначными.
В этой статье я хочу подробнее разобрать разные варианты решения данной задачи, а также рассмотреть все плохие и хорошие стороны этих методов.

Как это работает?

Перед тем, как рассматривать каждое решение в отдельности, давайте немного углубимся в тонкости механизма и поразмыслим, как он работает.
По сути мы должны получить то, что делает text-align: justify с текстом. Так как поведение наших блоков уж очень напоминает результат выравнивания слов в строке с помощью именно этого свойства. Немного углубившись в процесс работы text-align: justify , мы можем наблюдать следующий алгоритм.

Этап первый
Сначала в строке текста ищутся минимальные, неразрывные «кирпичики». Это могут быть отдельные слова в тексте, картинки, инлайн-блоки, инлайн-таблицы и т.д. В общем всё то, что в случае необходимости перенесется на новую строку как единое целое.

Цифрой 1 на картинке отмечены обычные инлайн-боксы, т.е. попросту текст или инлайн элементы, такие, например, как span> или .
Под цифрой 2 у нас находится элемент строчно-блочного уровня, т.е inline-block . Как можно заменить, алгоритм отступов внутри него рассчитывается заново. Причина в том, что внутри себя inline-block генерирует свой собственный контекст форматирования. Что нельзя сказать об обычном inline элементе, внутри которого межсловное расстояние распределялось бы, по общему, внешнему алгоритму.
Цифрой 3 отмечена обычная картинка. Так же, как и остальные, она является строчным, целым элементом.
Для нашей строки все эти вещи представляют из себя отдельные сущности, неразделимые слова, единые целые. А расстояния между ними как раз и регулируется нашим механизмом, под названием text-align: justify
* Последняя же строка не попадает в поле зрения justify , так как он работает только для целиком заполненных строк, а в последней строке пробелы всегда остаются своего обычного размера.

Этап второй
Вторым этапом алгоритм высчитывает ширины всех наших «кирпичей» в строке, складывает их, а полученный результат отнимает от общей ширины самой строки.

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

Этап третий — завершающий
Третьим и последним этапом алгоритма будет деление полученной цифры (в данном случае 116) на количество пробелов в строке (в нашей строке их 7). Из полученного результата (16.571) вычитается ширина одного пробела и уже это значение добавляется к каждому из них. Что в итоге даёт равномерное распределение отступов во всей строке.

Итог
Как мы можем видеть, алгоритм работы text-align: justify не так уж и сложен на самом деле, всё вроде бы понятно и логично. Я уверен, что каждый из нас, решая подобную задачу, высчитывал бы результат, по точно такому же сценарию. Сложность заключается только в том, чтобы написать хорошее, красивое, а главное качественное решение, затратив при этом минимум материала. Ведь существует много подводных камней, в виде последней (не попадающей под алгоритм) строки, которую нужно прятать, или каким либо образом выравнивать точно так же, как и все остальные. Ну и естественно нельзя забывать об интерпретации кода, таких браузеров, как Opera, IE6-7, которые любят преподносить неожиданные сюрпризы.

Наша задача

Наша задача состоит в том, чтобы построить решение на базе этого алгоритма. Применить, симулировать, заменить, сделать всё что угодно, главное в итоге получить то, что мы хотим. А именно — равномерно выровненные элементы в строке, боковые из которых прижаты к своим границам. Ну и конечно же расстояния (пробелы) между элементами должны быть абсолютно одинаковыми при любой ширине контейнера.

Вариант 1

Самое первое, что пришло мне на ум, это взять список из пяти пунктов, сделать 4 из них обтекаемыми, а у последнего отменить float и растянуть на всю оставшуюся ширину. Чтобы было понятнее, о чём идёт речь, привожу код.
Структура будет таковой

А CSS таким

Ul { font: 14px Verdana, Geneva, sans-serif; overflow: hidden; } ul li { } ul li.left { width: 20%; float: left; } ul li.right { width: 20%; float: right; text-align: right; } ul li. center { text-align: center; } ul li .content { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; }

Что мы собственно сделали? А сделали мы следующее. Два левых и два правых пункта мы раскидали по разным сторонам с помощью float: left и float: right соответственно, при этом назначив им по 20% ширины каждому, что в сумме дало 80% от всей ширины контейнера. Последний пункт, я решил не делать обтекаемым, так как его содержимое само по себе занимает всё оставшиеся пространство после float-блоков.
Соответственно для такого решения пришлось пожертвовать разметкой, а точнее дополнительными классами + внутренними контейнерами для контента. Как вы могли заметить, каждый из этих контейнеров я сделал строчно-блочным, повесив на них display: inline-block , благодаря чему мой контент смог выравниваться в любую сторону с помощью text-align у родителя. Эти «жертвы» с большой натяжкой можно было бы отнести к хорошему решению, если бы не некоторые, весомые «но».
Во-первых, как видно из скриншотов, равномерные отступы имеют только боковые пункты, а между средним и остальными есть явная разница. И чем больше ширина контейнера, тем заметнее это становится.
Во-вторых, ради эксперимента, я назначил второму пункту ширину, равную 200px.

И второй элемент сразу же оказался под третьим. Конечно же можно было бы поставить минимальную ширину контейнеру и такого бы не произошло, но разве можно считать это действие отговоркой или решением? Конечно же нет! Я хочу, чтобы наши пункты могли иметь любую ширину и при этом чтобы наш алгоритм идеально работал.
Ну и в-третьих, все эти дополнительные обёртки, классы, рассчитывание кол-ва элементов, их ширины, а так же и ширины контейнера ставят абсолютную точку на этот варианте, заставляя нас идти дальше, в поисках настоящего решения.
Выкладываю этот вариант на всеобщий суд и перехожу к следующему способу.

Вариант 2

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

ul { font: 14px Verdana, Geneva, sans-serif; overflow: hidden; } ul li.one { float: left; } ul li.two { overflow: hidden; float: none; } ul li.two li { width: 25%; text-align: right; float: left; /* Лекарство для IE6-7*/ //width: 24.9%; } ul li .content { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; }

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

Левая колонка прижата к левому краю и содержит в себе самый первый, одиночный блок. Это нужно для того, чтобы правая часть прижималась вплотную с правой стороны и растягивалась на всё оставшееся место. Растяжка правой части происходит благодаря overflow: hidden , который создаёт свой контекст форматирования, т.е. по сути свой собственный, независимый контейнер. Для всех дочерних элементов этого контейнера его ширина составляет 100% и поэтому блоки внутри него мы растягиваем в соответствии с этим правилом. Четыре блока имеют ширину 25%, что в сумме даёт 100. На изображении можно увидеть, как расположены эти блоки. Видно, что строчно-блочные элементы с контентом внутри них выровнены по правому краю с помощью text-align: right , благодаря чему самый правый блок прижат к своей боковой стенке, так же как и левый.

Благодаря таким «жертвам» с двумя колонками, мы получили отличный результат, и как видно из первых рисунков, при разных разрешениях, расстояние отступов между блоками остаётся абсолютно одинаковым. Это происходит за счёт равнозначных блоков в правой части. Ширина каждого из них составляет 25%, а элемента внутри них — 100px. Что и даёт равные отступы слева от каждого «кирпичика» в отдельности.
На данный момент можно смело заявить, что при фиксированной ширине блоков у нас получилось именно то, что мы хотели.

Но всё же интересно узнать, что будет, если мы поменяем ширину сначала у первого, а потом и у любого блока из правой части. Давайте для начала поставим левому… ну допустим 150px.

Ul li.one .content { width: 150px;}

Всё здорово! Пока работает всё та же идея с правым, самостоятельным контейнером. А теперь перенесём нашу ширину на первый блок в правой части.

Эх, а вот этот эксперимент потерпел неудачу. Правый отступ у самого левого блока оказался меньше, чем все остальные. Всё легко объясняется тем, что контент первого элемента в правой части, стал больше на 50px, а так как он выровнен по правой стороне, то ширина визуально прибавилась к его левой части и соответственно стала отличаться от ширины соседних блоков. Ну и естественно поменялся отступ, который стал меньше ровно на 50px.

Из всего этого можно сделать вывод, что данный метод явно лучше, чем его предшественник и то, что он имеет право на жизнь. Единственный его недостаток связан с тем, что мы не может задать разную ширину блокам, и должны придерживаться одинаковой. Так что, если у вас есть список, в котором все пункты имеют равную ширину, то вы вполне можете применять этот подход. Конечно же, нужно понимать, что без двухколоночной структуры тут не обойтись + нужна обязательная минимальная ширина у контейнера (min-width) , иначе при маленькой ширине экрана блоки будут наезжать друг на друга.
* Кстати, у себя в примере, в правом контейнере я использовал четыре блока по 25%, и их общая сумма составила 100%. Поэтому нужно помнить, что если блоков будет, ну скажем 6, то ширина каждого из них, будет равна 16.666, что говорит о дробных процентах, которые, например, не поддерживаются в браузере Opera.
Соответственно результат в этом случае будет немного не тем, чем вам хотелось бы.

Вариант 3 — text-align: justify

Стоит отметить, что до этого момента, ни в одном примере, мы ни разу не воспользовались text-align: justify , даже не смотря на то, что именно на основе его алгоритма и строятся все наши решения. Я предлагаю нарушить эту традицию и, наконец, пустить уже в дело этого зверя.

В первой части статьи мы выяснили, что text-align: justify влияет на все строки, кроме последней, а значит нужно построить наш список с учётом этого поведения, добавив в конец меню дополнительный, вспомогательный элемент.

Ul { font: 14px Verdana, Geneva, sans-serif; text-align: justify; } ul li { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; } ul li.helper { width: 100%; height: 0; visibility: hidden; }

Из кода ясно, что мы создали список с пятью основными и одним элементом — помощником. text-align: justify на главном элементе-родителе (ul ), заставляет своих потомков подчиняться своему алгоритму. Ведь, как известно, это свойство работает с текстом, а так как наши строчно-блочные (display: inline-block) пункты, по сути и являются неразрывными словами в строке, то это поведение вполне закономерно. Кстати, стоит учесть, что text-align: justify наследуемое свойство, поэтому text-align: left на ближайших потомках — необходимая мера. Этим самым мы как бы возвращаем выравнивание содержимого наших блоков в прежнее состояние.
В первой части статьи я упоминал, что наш алгоритм не распространяется на последнюю строку, а работает со всеми строками кроме неё. Поэтому я добавил в конец ещё один элемент, пустышку, и растянул его на 100% по ширине, тем самым заставив его растянуться на самую последнюю строчку в списке. С помощью нехитрых приёмов (height: 0 , visibility: hidden) я, можно сказать, почти что спрятал его. Почему я сказал «Почти что»? Об этом чуть позже, для начала давайте взглянем на то, что у нас вышло.

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

Добавим для них свои правила.

First { width: 150px;} .third { width: 200px;}

Проверяем.

Я специально увеличил ширину экрана, чтобы при маленькой ширине блоки не перескакивали на другую строку, как обычные слова в тексте. Но, если посмотреть на результаты алгоритма, то он работает! Пробелы между элементами остаются равнозначными, даже не смотря на то, что у двоих из них, мы увеличили ширину.
Т.е. можно с лёгкостью заявлять, что этот метод, с дополнительным элементом в конце — даёт отличный результат и, если ограничить экран по ширине, то его применение на практике нас не разочарует.
Так, ну а теперь, пожалуй, настало время подлить ложку дёгтя.
Во-первых, как вы могли заметить, во всех примерах я перечислял все браузеры, кроме IE6-7.
Во-вторых, опять же, как вы, наверное могли видеть на рисунках, внизу нашей строки, где дополнительный элемент, есть большие, непонятные отступы.
Давайте разбираться по порядку.

Первая проблема — это проблема IE6-7. Не приводя скриншоты, скажу сразу, что наш метод там не работает. Пункты в этих браузерах прижаты друг к другу вплотную и не растягиваются в строке. Дело в том, что парсер IE6-7 полностью игнорирует закрывающие теги у элементов

  • . А нет тегов — значит нет пробелов между ними, и, следовательно text-align: justify пропускает нашу строку, состоящую по сути из одних «строчно-блочных» слов, прижатых друг к другу.

    За решением данной проблемы мы отправляемся на самую высокую гору… на MSDN . Мда… найти что либо на этом сайте, представляет большую трудность. Но, всё же повозившись, некоторое время, решение было найдено ! text-justify: newspaper — свойство для увеличения или уменьшения интервалов между буквами и между словами. MSDN заявляет, что эта вещь «Самая навороченная форма выравнивания для латинского алфавита», а вот в этой статье ещё есть и дополнение, что для арабских текстов это свойство вытягивает и сами буквы.
    Отлично, нам как раз нужно что-нибудь наподобие. Давайте-ка проверим их слова на деле.

    Ul { font: 14px Verdana, Geneva, sans-serif; text-align: justify; /* Лекарство для IE6-7*/ text-justify: newspaper; } ul li { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; } ul li.helper { width: 100%; height: 0; visibility: hidden; } .first { width: 150px;} .third { width: 200px;}

    А вот и результат.

    Победа! IE6-7 были побеждены их же оружием. Здорово. Теперь во всех браузерах, начиная с IE6, наш способ работает идеально. Выходит, что MSDN не подвели и их слова подтвердились на деле. Так что text-align: justify выручил нас, поэтому берём его на заметку и переходим к решению второй проблемы.

    Вторая проблема связана с непонятным отступом между низом списка и нашей строкой с элементами. В чём же дело? А дело в том, что всё вполне закономерно и этими странными отступами являются ни кто иные, как межстрочный интервал (line-height) и размер шрифта (font-size), которые априори присутствуют у строк и букв в тексте. Наши элементы — блочные только внутри, а строчные снаружи, поэтому они и попадают под эти правила.
    Как быть? А легко! Мы можем повесить на контейнер обнуление этих стилей, а уже у потомков восстановить их в прежнее состояние. Пробуем.

    Ul { font: 14px Verdana, Geneva, sans-serif; text-align: justify; /* Обнуляем для родителя*/ line-height: 0; font-size: 1px; /* 1px для Opera */ /* Лекарство для IE6-7*/ text-justify: newspaper; } ul li { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* Востанавливаем у потомков, кроме последнего*/ line-height: normal; font-size: 14px; /* Без него в Opera будет отступ под элементами */ vertical-align: top; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; } ul li.helper { width: 100%; height: 0px; visibility: hidden; overflow: hidden; } .first { width: 150px;} .third { width: 200px;}

    Результат.

    До обнуления

    После обнуления

    Отлично! Всё получилось. Обнуление стилей у главного контейнера помогло нам. Единственное, что теперь стоит помнить, это то, что в связи с обнулением размера шрифта мы не сможем задать нашим пунктам шрифт в таких единицах длины, как em , а так же % для не принесут желаемого результата. Но, а целом, наш метод работает идеально, так что можно подводить итоги и идти дальше, ведь нам же мало одного решения, нам же нужно больше и лучше, не правда ли?

    Подводя промежуточные итоги, скажу, что данный подход пока что лидер среди присутствующих до сей поры решений, и что, я лично, не вижу в нём ни одного изъяна, правда, кроме… Кроме дополнительного элемента в конце строки, плюс, как мне кажется, неактуальные проблемы с % и em. Но, эти натянутые минусы, никак не могут быть причиной отказа от представленного варианта. Так что смотрим результат и идём дальше.

    Вариант 4 — Избавление от дополнительного элемента

    В предыдущем варианте для нашей цели мы использовали дополнительный элемент, ставя его в конец списка. С одной стороны, конечно же, этот маневр принес свои плоды, но с другой… но с другой стороны создал некие неудобства. Например, при динамическом добавлении пунктов, вспомогательный блок будет только мешать, да и потом этот «хвост» портит нашу структуру, засоряя её. В этом варианте, я предлагаю избавиться от него, не испортив при этом решение.
    В CSS2.1 уже давно есть такие вещи, как псевдоэлементы . Это такие абстрактные сущности, которые могут быть сгенерированы каким нибудь элементом и вставлены в его начало или конец. Почему бы не заменить таким псевдоэлементом наш лишний вспомогательный блок? Давайте попробуем…

    Ul { font: 14px Verdana, Geneva, sans-serif; text-align: justify; /* Обнуляем для родителя*/ line-height: 0; font-size: 1px; /* 1px для Opera */ /* Лекарство для IE6-7*/ text-justify: newspaper; zoom:1; } ul:after { width: 100%; height: 0; visibility: hidden; overflow: hidden; content: «»; display: inline-block; } ul li { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* Востанавливаем у потомков, кроме последнего*/ line-height: normal; font-size: 14px; /* Без него в Opera будет отступ под элементами */ vertical-align: top; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; }

    В данной ситуации мы воспользовались псевдоэлементом:after , который сгенерировали в конце нашего списка. Выставив ему те же значения, что и бывшему, вспомогательному блоку, мы, по сути сделали тоже самое, но не залезая в разметку. Т.е. создали такой же, пустой, но полезный элемент. И вот результаты.

    Здорово! Трюк с псевдоэлементом сработал. Теперь наша разметка чистая, аккуратная и без лишнего «мусора». Нам удалось избавиться от дополнительного элемента, полностью заменив его сгенерированным.
    Но, как обычно, не обошлось без IE6-7 приключений. К сожалению, в браузерах IE6-7 нет поддержки:after и:before . А если нет поддержки, следовательно и нет никаких вспомогательных блоков, а значит и растягивать попросту нечего. Поэтому картина в этих браузерах такова.

    Как видно из скриншота, IE6-7 полностью игнорирует пробелы между блоков, прижимая их вплотную друг к другу. Даже не смотря на то, что мы уже задействовали тяжёлую артиллерию в виде text-justify: newspaper . Почему же это происходит? Давайте выясним.
    Оказывается всё дело в том, что text-justify: newspaper лишь даёт возможность растягивать наши буквы (inline-block), но не команду . Проще говоря, он рассказывает строке, как бы он хотел, чтобы она была растянута, а text-align: justify является растягивающей силой. Т.е. text-align: justify отвечает за растяжение строки, а text-justify: newspaper лишь уточняет, как именно это растяжение будет происходить.
    Да, но тогда возникает вопрос: «Если есть и возможность и сила, которая может её исполнить, то почему же тогда ничего не происходит?». Ответ кроется в самом свойстве text-align: justify . Если вы помните, в обсуждении его алгоритма я упомянул о том, что он не распространяется на последнюю строку в тексте. А так как мы убрали вспомогательный элемент в конце списка, то соответственно наша строка (пускай даже она одна) с блоками — стала уже последней, и следовательно алгоритм отказался с ней работать.

    Как же быть? Есть ли выход?
    К счастью мир не без добрых людей, и один такой добрый человек направил меня на верный путь. Оказывается решение было у меня под носом. text-align-last — свойство, которое включает алгоритм text-align: justify в самой последней строке текста, если к ней применён этот самый text-align: justify . Проще говоря, когда мы применяем к тексту обычный text-align: justify , то, видя это, text-align-last указывает первому на то, что он поступает плохо и что ему придётся теперь работать и в последней строчке тоже.
    Самое интересное, что это свойство считается ориентированным именно на Internet Explorer, в котором он нам как раз и нужен). В общем пора переходить к делу.

    Ul { font: 14px Verdana, Geneva, sans-serif; text-align: justify; /* Обнуляем для родителя*/ line-height: 0; font-size: 1px; /* 1px для Opera */ /* Лекарство для IE6-7*/ text-justify: newspaper; zoom:1; /* Включаем в работу последнюю строку*/ text-align-last: justify; } ul:after { width: 100%; height: 0px; visibility: hidden; overflow: hidden; content: «»; display: inline-block; } ul li { background: #E76D13; width: 98px; height: 98px; display: inline-block; text-align: left; border: 1px solid #000; /* Востанавливаем у потомков, кроме последнего*/ line-height: normal; font-size: 14px; /* Без него в Opera будет отступ под элементами */ vertical-align: top; /* эмуляция inline-block для IE6-7*/ //display: inline; //zoom: 1; }

    Да! У нас получилось. text-align-last: justify сделал то, что от него требовалось, и сделал это на 5 баллов. Алгоритм включился в работу, в нашей последней и единственной строке. Так что празднуем победу и подводим итоги этого способа.

    Ну что ж, я доволен. Доволен тем, что нам удалось найти действительно достойное решение. Причём не просто найти, а разобраться во всём и довести его до абсолютной кроссбраузерности, затратив минимум кода и не засоряя разметки. На лицо одни плюсы, а что же с минусами? Как по мне, так их попросту — нет. По сравнению с предыдущим вариантом, в этом мы только улучшили результаты. Разве что…

    Единственное, что теперь стоит помнить, это то, что в связи с обнулением размера шрифта мы не сможем задать нашим пунктам шрифт в таких единицах длины, как em, а так же % для

    не принесут желаемого результата.

    Но, опять же, эти «минусы» с большой натяжкой можно назвать таковыми. Их неактуальность говорить о том, что про них можно практически забыть, если это не принципиально.
    Так что в целом решение отличное, надёжное и действительно качественное.

    Резюме

    В этой статье мы рассматривали не только методы, которые могут помочь нам в равномерном выравнивании блоков по ширине, но и так же очень подробно разобрали механизмы работы всех свойств и деталей, участвующих в процессе. Всё это важно для понимания вещей, с которыми мы имеем дело. Поэтому я настоятельно рекомендую перечитать статью, и не один раз.
    Я безумно рад, что нам удалось добиться своей цели и найти достойное и качественное решение.

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

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

    И да, стоит сразу сказать, что данные способы могут не работать в ie6, или чём-то подобном. Я даже не обращаю внимание на данный браузер, не смотря на то, сколько людей им пользуется. Пора бы уже отучивать пользоваться старьём.

    Итак, что мы имеем?

    Способ 1. Самый крутой

    margin:0 auto;

    Очень эффективный метод, который к тому-же позволяет выровнять отступы сверху и снизу. В чём фишка метода? Всё просто до безумия. Мы имеем блок с определённой шириной (в пикселях, либо процентах), которому с помощью свойства «auto» задаём одинаковый отступ справа и слева, в итоге получаем div-блок по центру. Первое значение (0 в примере) — это отступ сверху и снизу.

    К примеру, для выравнивания сверху пишем:

    Margin:10px auto;

    Для выравнивания сверху и снизу:

    Margin:10px auto 5px;

    На мой взгляд — это самый лучший способ выровнять блоки по центру . К тому-же он полностью валидный.

    Способ 2.

    Процентный

    Если блок имеет ширину в процентах, то мы можем выровнять div по центру применяя равные отступы, чтобы добить полную ширину до 100%. Кто не понял, покажу на примере, так проще:

    Имеем блок шириной 50%, чтобы выровнять его по центру, нам нужно боковые отступы сделать по 25% справа и слева соответственно. Смотрим код:

    Не напрягаясь, получаем блок по центру, выровненный банальной математикой (50 + 25 + 25) 🙂

    Способ 3. Смешанный

    Данный способ посоветовал в комментариях sman .

    Как я упоминал в начале статьи, способов выровнять блок по центру огромное множество. Каждый выбирCgает тот, который ему больше по душе. Жду комментариев и новых способов 🙂

    Способ 4. Использование дополнительного блока

    Способ Виктор в комментариях:

    Ни один метод не решает проблему с float внутри блока, если ширина блока заведомо не известна (например, меню).

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

    #dop-block { position: relative; float: right; right: 50%; } #block { position: relative; float: left; left: 50%; }

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

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

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

    Первый метод с line-height

    Первый способ очень банальный и с большим недостатком, что ограничивает его в применении. Но все же, как ни крути, он может пригодиться и даже принести нужный результат. Это будет условным выравниванием, так как, по сути, мы задаем высоту строки в соответствии с высотой блока, использовав свойство line-height .

    первый пример. демо №1

    Точно таким же способом возможно реализовать картинку по центру вертикали, но добавив одно новое свойство vertical-align: middle; .

    Выравнивание со свойством position

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

    Поэтому нужно задать отрицательное значение к внешним отступам. Размер отступа сверху должен соответствовать половине высоты внутреннего блока, а отступ слева — на половину ширины. Таким образом, получим абсолютный центр.

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

    Выравнивание со свойством table

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

    применять не будет, а воспользуемся свойствами CSS, такими как display: table; , display: table-cell; . В старых версиях IE данный способ не работает, да и не нужно. Ими, вообще, еще кто-то пользуется?

    Выравнивание со свойством flex

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

    Выравнивание со свойством transform

    И последний в нашем списке, но далеко не последний в использовании способ. Сдвигаем по вертикали элемент на желаемое значение, в данном случае на -50%.

    В CSS есть всего несколько техник центрирования элементов. Если их знать, то большинство задач решаются просто.

    Горизонтальное

    text-align

    Для центрирования инлайновых элементов – достаточно поставить родителю text-align: center :

    Для центрирования блока это уже не подойдёт, свойство просто не подействует. Например:

    margin: auto

    Блок по горизонтали центрируется margin: auto :

    В отличие от width/height , значение auto для margin само не появляется. Обычно margin равно конкретной величине для элемента, например 0 для DIV . Нужно поставить его явно.

    Значение margin-left:auto/margin-right:auto заставляет браузер выделять под margin всё доступное сбоку пространство. А если и то и другое auto , то слева и справа будет одинаковый отступ, таким образом элемент окажется в середине. Детали вычислений описаны в разделе спецификации Calculating widths and margins.

    Вертикальное

    Для горизонтального центрирования всё просто. Вертикальное же изначально не было предусмотрено в спецификации CSS и по сей день вызывает ряд проблем.

    Есть три основных решения.

    position:absolute + margin

    Центрируемый элемент позиционируем абсолютно и опускаем до середины по вертикали при помощи top:50% :

    Это, конечно, не совсем центр. По центру находится верхняя граница. Нужно ещё приподнять элемент на половину своей высоты.

    Высота центрируемого элемента должна быть известна. Родитель может иметь любую высоту.

    Если мы знаем, что это ровно одна строка, то её высота равна line-height .

    Приподнимем элемент на пол-высоты при помощи margin-top :

    При стандартных настройках браузера высота строки line-height: 1.25 , если поделить на два 1.25em / 2 = 0.625em .

    Конечно, высота может быть и другой, главное чтобы мы её знали заранее.

    Можно аналогично центрировать и по горизонтали, если известен горизонтальный размер, при помощи left:50% и отрицательного margin-left .

    Одна строка: line-height

    Вертикально отцентрировать одну строку в элементе с известной высотой height можно, указав эту высоту в свойстве line-height :

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

    Таблица с vertical-align

    У свойства vertical-align, которое управляет вертикальным расположением элемента, есть два режима работы.

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

    Его возможные значения:

    baseline Значение по умолчанию. middle , top , bottom Располагать содержимое посередине, вверху, внизу ячейки.

    Например, ниже есть таблица со всеми 3-мя значениями:

    Обратим внимание, что в ячейке с vertical-align: middle содержимое находится по центру. Таким образом, можно обернуть нужный элемент в таблицу размера width:100%;height:100% с одной ячейкой, у которой указать vertical-align:middle , и он будет отцентрирован.

    Но мы рассмотрим более красивый способ, который поддерживается во всех современных браузерах, и в IE8+. В них не обязательно делать таблицу, так как доступно значение display:table-cell . Для элемента с таким display используются те же алгоритмы вычисления ширины и центрирования, что и в TD . И, в том числе, работает vertical-align :

    Этот способ замечателен тем, что он не требует знания высоты элементов.

    Однако у него есть особенность. Вместе с vertical-align родительский блок получает табличный алгоритм вычисления ширины и начинает подстраиваться под содержимое. Это не всегда желательно.

    Чтобы его растянуть, нужно указать width явно, например: 300px :

    Можно и в процентах, но в примере выше они не сработают, потому что структура таблицы «сломана» – ячейка есть, а собственно таблицы-то нет.

    Это можно починить, завернув «псевдоячейку» в элемент с display:table , которому и поставим ширину:

    Если дополнительно нужно горизонтальное центрирование – оно обеспечивается другими средствами, например margin: 0 auto для блочных элементов или text-align:center на родителе – для других.

    Центрирование в строке с vertical-align

    Для инлайновых элементов ( display:inline/inline-block ), включая картинки, свойство vertical-align центрирует сам инлайн-элемент в окружающем его тексте.

    В этом случае набор значений несколько другой:

    Это можно использовать и для центрирования, если высота родителя известна, а центрируемого элемента – нет.

    Допустим, высота внешнего элемента 120px . Укажем её в свойстве line-height :

    Работает во всех браузерах и IE8+.

    Свойство line-height наследуется, поэтому надо знать «правильную» высоту строки и переопределять её для inner .

    Центрирование с vertical-align без таблиц

    Если центрирование должно работать для любой высоты родителя и центрируемого элемента, то обычно используют таблицы или display:table-cell с vertical-align .

    Если центрируются не-блочные элементы, например inline или inline-block , то vertical-align может решить задачу без всяких таблиц. Правда, понадобится вспомогательный элемент (можно через :before ).

    • Перед центрируемым элементом помещается вспомогательный инлайн-блок before , занимающий всю возможную высоту.
    • Центрируемый блок выровнен по его середине.

    Для всех современных браузеров и IE8 можно добавить вспомогательный элемент через :before :

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

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

      Убрать лишний пробел между div и началом inner , будет

    Центрирование с использованием модели flexbox

    Данный метод поддерживается всеми современными браузерами.

    • Не требуется знания высоты центрируемого элемента.
    • CSS чистый, короткий и не требует дополнительных элементов.
    • Не поддерживается IE9-, IE10 поддерживает предыдущую версию flexbox.

    Итого

    Обобщим решения, которые обсуждались в этой статье.

    Для горизонтального центрирования:

    • text-align: center – центрирует инлайн-элементы в блоке.
    • margin: 0 auto – центрирует блок внутри родителя. У блока должна быть указана ширина.

    Для вертикального центрирования одного блока внутри другого:

    Если размер центрируемого элемента известен, а родителя – нет

    Родителю position:relative , потомку position:absolute; top:50% и margin-top:- . Аналогично можно отцентрировать и по горизонтали.

    Если нужно отцентрировать одну строку в блоке, высота которого известна

    Поставить блоку line-height: . Нужны конкретные единицы высоты ( px , em …). Значение line-height:100% не будет работать, т.к. проценты берутся не от высоты блока, а от текущей line-height .

    Высота родителя известна, а центрируемого элемента – нет.

    Поставить line-height родителю во всю его высоту, а потомку поставить display:inline-block .

    Высота обоих элементов неизвестна.

    1. Сделать элемент-родитель ячейкой таблицы при помощи display:table-cell (IE8) или реальной таблицы, и поставить ему vertical-align:middle . Отлично работает, но мы имеем дело с таблицей вместо обычного блока.
    1. Решение со вспомогательным элементом outer:before и инлайн-блоками. Вполне универсально и не создаёт таблицу.
    2. Решение с использованием flexbox.

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

    Вертикальное выравнивание по центру с помощью CSS достигается не так просто. Существует множество способов и не все работают во всех броузерах. Давайте рассмотрим 5 различных методов, а также «за» и «против» каждого из них. Пример.

    1-ый способ

    Этот метод предполагает, что мы устанавливаем некоторому элементу

    Плюсы

    • Контент может динамически изменять высоту (высота не определена в CSS).
    • Контент не обрезается в случае, если для него недостаточно места.

    Минусы

    • Не работает в IE 7 и меньше
    • Много вложенных тэгов

    2-ой метод

    Этот метод использует абсолютное позиционирование div-а, которому top устанавливается в 50%, а верхний отступ (margin-top) минус половине высоты контента. Это подразумевает, что объект должен иметь фиксированную высоту, которая определена в стилях CSS.

    Поскольку высота фиксированная, вы можете установить overflow:auto; для div-а содержащего контент, таким образом, в случае если контент не будет влазить, то появятся скролл-бары.

    Плюсы

    • Работает во всех броузерах.
    • Нет лишней вложенности.

    Минусы

    • Когда не достаточно места, контент пропадает (например, div находится внутри body, а пользователь уменьшил окна, в этом случае скролл-бары не появятся.

    3-ий метод

    В этом методе, мы обернём div с контентом другим div-ом. Установим ему высоту в 50% (height: 50%;), а нижний отступ половине высоты (margin-bottom:-contentheight;). Контент будет очищать float и выводиться по центру.

    Плюсы

    • Работает во всех броузерах.
    • Когда недостаточно места (например, когда уменьшено окно) контент не обрезается, появятся скроллбары.

    Минусы

    • Думаю только один: что используется лишний пустой элемент.

    4-ый метод.

    Этот метод использует свойство position:absolute; для div-а с фиксированными размерами (шириной и высотой). Затем устанавливаем ему координаты top:0; bottom:0;, но поскольку у него фиксированная высота, то он не может растянуться и выравнивается по центру. Это очень похоже на общеизвестный метод горизонтального выравнивания по центру блочного элемента фиксированной ширины (margin: 0 auto;).

    Плюсы

    Минусы

    • Не работает в Internet Explorer
    • Контент будет обрезаться без скролл-баров, если не хватает места в контейнере.

    5-ый метод

    С помощью этого метода можно выровнять по центру одну строку текста. Просто устанавливаем высоту текста (line-height) равной высоте элемента (height). После этого строка будет выведена по центру.

    Плюсы

    • Работает во всех броузерах.
    • Не обрезает текст, если он не влез.

    Минусы

    • Работает только с текстом (не работает с блочными элементами).
    • Если текста больше чем одна строка, то выглядит очень плохо.

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

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

    Шаг 1

    Всегда хорошо начинать с семантической разметки. Наша страница будет структурирована следующим образом:

    • #floater (чтобы выровнять контент по центру)
    • #centred (центральный элемент)
  • #content
  • #bottom (для копирайтов и всего такого)
  • Напишем следующую html-разметку:

    Шаг 2

    Сейчас мы напишем простейший CSS, для размещения элементов на странице. Вы должны сохранить этот код в файле style.css. Именно на него прописана ссылка в html-файле.

    Перед тем как сделать наш контент выровненным по центру, необходимо для body и html установить высоту 100%. Так как высота считается без внутренних и внешних отступов (padding и margin), то мы устанавливаем их (отступы) в 0, чтобы не было скроллбаров.

    Нижний отступ для элемента «floater»-а равен минус половине высоты контента (400px), а именно -200px;

    Сейчас ваша страничка должна выглядеть приблизительно так:

    Ширина элемента #centered 80%. Это делает наш сайт уже на маленьких экранах и шире на больших. большинство сайтов выглядит неприлично на новых широких мониторах в верхнем левом углу. Свойства min-width и max-width также ограничивают нашу страничку, чтобы она не выглядела слишком широкой или слишком узкой. Internet Explorer не поддерживает эти свойства. Для него надо установить фиксированную ширину.

    Поскольку элементу #centered установлено position:relative, мы можем использовать абсолютное позиционирование элементов внутри него. Затем установим overflow:auto; для элемента #content, чтобы появлялись скроллбары, в случае если не будет помещаться контент.

    Шаг 3

    И последнее что мы сделаем, это добавим кое-какие стили, чтобы страничка выглядела немного привлекательнее. Давайте начнём с меню.

    Первое что мы сделали, чтобы меню выглядело лучше, удалили маркеры, установив атрибут list-style:none, а также установили внутренние и внешние отступы, так как по умолчанию в разных броузерах они сильно различаются.

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

    Другая интересная вещь, которую мы использовали для меню – это псевдо-классы :before и :after. Они позволяют вам добавить что-нибудь перед и после элемента. Это хороший способ добавлять иконки или символы, такие как стрелочка в конце каждой ссылки. Такой трюк не работает в Internet Explorer 7 и ниже.

    Шаг 4

    Ну и самое последнее, мы добавим в наш дизайн кое-какие втили для ещё большей красоты.

    В этих стилях мы устанавливаем закруглённые углы для элемента #centered. В CSS3, за это будет отвечать свойство border-radius. Это пока что не реализовано некоторыми броузерами, разве только использовать приставки -moz и -webkit для Mozilla Firefox и Safari/Webkit.

    Совместимость

    Как вы уже наверное предположили, основной источник проблем совместимости – Internet Explorer:

    • Элементу #floater обязательно надо установить ширину
    • В IE 6 лишние отступы вокруг меню

    Выравнивание текста CSS

    Горизонтальное выравнивание текста определяет внешний вид и характер содержания в пределах элемента.

    Для того чтобы задать выравнивание с заданными параметрами используются следующие варианты записей:

    
    text-align : left;
    text-align : right;
    text-align : center;
    text-align : justfy;
    
    

    left – задаёт выравнивание текста по левому краю

    right – горизонтальное выравнивание текста по правому краю

    center – расположение текста по центру

    justfy – выравнивание по левому и правому краю одновременно. В данном случае текст будет выравниваться по ширине

    
    HTML
    
    <div>
      <p>
        Текст слева.
      </p>
    </div>
    
    
    
    CSS
    
    body {
        height: 100%;
        padding-top: 45px;
        background-color: #eaeaea;
        font-family: Arial, Helvetica, sans-serif;
    }
    .box{
        width: 300px;
        margin: 0px auto;
        padding: 3px 20px;
        background-color: #fc0;
    }
    .box p{
        font-size: 25px;
        font-weight: bold;
        text-align: left;
    }
    
    
    
    HTML
    
    <div>
      <p>
        Текст справа.
      </p>
    </div>
    
    
    
    CSS
    
    .box p{
        font-size: 25px;
        font-weight: bold;
        text-align: right;
    }
    
    
    
    HTML
    
    <div>
      <p>
        Текст по центру.
      </p>
    </div>
    
    
    
    CSS
    
    .box p{
        font-size: 25px;
        font-weight: bold;
        text-align: center;
    }
    
    
    
    HTML
    
    <div>
    
    <h2>Текст по левому и правому краю</h2>
    
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Suspendisse blandit magna sed nulla egestas, nec mollis nibh pharetra.
    Aliquam non tortor sit amet lacus feugiat lobortis a vitae arcu.
    Quisque molestie leo eget quam interdum, sit amet sodales tellus viverra.
    Maecenas finibus sed nibh ac gravida. Sed vulputate mi in nisl bibendum,
    sed lobortis neque maximus. Fusce condimentum eget sem eget placerat.
    In hac habitasse platea dictumst.</p>
    
    </div>
    
    
    
    CSS
    
    .box{
        width: 350px;
        margin: 0px auto;
        padding: 3px 20px;
        background-color: #fc0;
    }
    .box p{
        font-size: 16px;
        text-align: justify;
    }
    .box h2{
        font-size: 20px;
        text-align: center;
    }
    
    

    CSS свойства text-decoration, vertical-align, text-align, text-indent для оформления текста в Html

    Обновлено 10 января 2021
    1. Text-decoration, text-align, text-indent в CSS
    2. Vertical-align — вертикальное выравнивание
    3. Text-transform, letter-spacing, word-spacing и white-space

    Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня мы продолжаем изучать основы стилевой разметки CSS и у нас на очереди свойства text-decoration, vertical-align, text-align, text-indent и ряд других, которые помогают оформлять внешний вид текстов в Html коде.

    В прошлой статье мы рассмотрели свойства font-family, font-weight, font-size и font-style в CSS коде, которые предназначаются для настройки внешнего вида шрифтов при современной блочной верстке сайтов.

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

    Text-decoration, text-align, text-indent в CSS

    Как же в Css работать с текстом? Вполне логично будет предположить, что для этой цели существуют специально предназначенные правила. Давайте начнем с text-align, которое является фактически заменой атрибута align (он использовался в чистом Html 4.01 по версии валидатора для выравнивания содержимого, например, абзацев P или заголовков).

    Он имеет всего четыре возможных значения:

    Смысл остается таким же, как и был раньше. Text align — это горизонтальное выравнивание строк. Применяется это правило исключительно только для блочных элементов (параграфы, заголовки и т.п.), т.е. тех тегах, в которых может появиться несколько строк. Т.к. в строчных элементах строк может быть только одна, то и смысла использования в них text-align особого нет.

    Понятно, что значения этого правила означают выравнивание, соответственно: по левому краю (left), по правому краю (right), по центру (center) и по ширине страницы (Justify — одновременно по левому и правому краю за счет увеличения расстояния между словами). Само собой, что значение Justify стоит использовать для элементов хотя бы с несколькими строками текста, иначе видимого эффекта от этого не будет.

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

    text-align:justify;

    По умолчанию горизонтальное выравнивание текста осуществляется по левому краю, т.е. специально писать text-align:left не нужно, если, конечно же, раньше вы не задавали другое выравнивание. Этот абзац я, кстати, выровнял по центру (center) опять же для наглядного примера, но тут, я думаю, все и так понятно.

    Следующее Css правило text-indent позволяет задать красную строку, например, для текста в теге абзаца P. Отступ красной строки можно задать с помощью указания величины (как со знаком плюс, так и со знаком минус, используя размеры (пиксели, em или ex) допустимые в CSS) или с помощью процентов:

    От чего считаются проценты в text-indent? От ширины области, которая отведена под текст. Т.е. Css правило text-indent:50% задаст красную строку равную половине длины этой самой строки. Ну, а этот абзац как раз и служит примером такого правила.

    А можно, например, задать отрицательное значение красной строки в text-indent и тогда мы получим примерно то, что вы видите в этом абзаце. Для достижения данного результата я написал для тега абзаца P вот такое вот CSS правило:

    text-indent:-1em;

    Ну, а обычное использование text-indent (для задания стандартной красной строки) может выглядеть так: text-indent:40px; (кстати, применено к этому параграфу). Это правило, так же как и рассмотренное раньше text-align, применяется только для блочных элементов, т.е. там, где может появиться несколько строк (абзацы, заголовки и т.п.).

    Так, теперь давайте перейдем к text-decoration (оформление с помощью горизонтальной линии), которое применяется уже ко всем Html элементам (и строчным, и блочным).

    Оно может иметь всего четыре значения:

    Т.е. можно использовать с помощью text-decoration: надчеркивание (overline), перечеркивание (line-through) или подчеркивание (underline), ну, или вообще ничего не использовать (none). Некоторые Html элементы уже имеют по умолчанию оформление горизонтальной линией, например, гиперссылки (тег A) (они по умолчанию подчеркиваются).

    Поэтому выделять что-то еще подчеркиванием (кроме гиперссылок) не есть хорошо, ибо у пользователей в подсознании записано, что раз подчеркнуто (а еще и цветом выделено) — значит по этому можно кликнуть для перехода. Но выделяя подчеркиванием обычный текст, вы вводите пользователя в заблуждение и последующее за ним разочарование вашим ресурсом (он то думал, а оказалось что…).

    Если текст гиперссылки нужно будет сделать неподчеркнутым (например, в меню), то используйте для text decoration элемента гиперссылки значение none.

    Нюансом в использовании Css правила text-decoration является то, что можно будет прописать сразу три (иди два) значения для любого Html элемента (опуская none) и в результате вы получите надчеркнуто-подчеркнуто-перечеркнутый фрагмент текста (прикольно звучит и смотрится, не правда ли?):

    text-decoration:underline overline line-through;

    Значения для text decoration (если вы хотите использовать сразу несколько из них) нужно писать через символ пробел.

    Vertical-align — вертикальное выравнивание

    Дальше у нас идет вертикальное выравнивание — vertical-align. Практически для всех элементов в Html коде оно означает выравнивание между собой строчных элементов с текстом относительно их базовой линии. Правда, для тегов таблицы Td и Th это означает немного другое — выравниваться по вертикали будет весь контент, который находится в этих ячейках.

    Для Css правила vertical-align можно использовать следующие значения:

    Строки по умолчанию выравниваются по базовой линии. Вот смотрите, я применил к этому фрагменту текста увеличение шрифта и эти два фрагмента выровнялись по базовой (нижней) линии. А вертикальное выравнивание с помощью vertical-align как раз и предназначено именно для изменения способа выравнивания строк.

    Например, если я для того же увеличенного фрагмента текста пропишу vertical-align:baseline, то никаких изменений не произойдет, т.к. значение baseline используется для этого Css правила по умолчанию.

    Кстати, в качестве значений для него можно использовать и числа, а надпись vertical-align:0 будет означать тоже самое, что и vertical-align:baseline, т.е. значение baseline эквивалентно нулю. Следовательно, если мы хотим указать какой-либо сдвиг в вертикальном выравнивании, то этот сдвиг будем указывать относительно базовой линии (или же нуля).

    Можно написать так:

    vertical-align:10px;

    И получим сдвиг фрагмента с увеличенным шрифтом вверх на 10 пикселей относительно базовой линии. Если напишем отрицательное значение:

    vertical-align:-10px;

    То получим сдвиг фрагмента вниз относительно базовой линии. Из примеров видно, что из-за сдвига увеличилась высота строки, чтобы текст помещался в ней без наезда на соседнюю строку. Сдвиг можно также задавать в Em и Ex, ну, и в процентах, которые будут считаться от высоты линии этого элемента (помните в прошлой статье мы научились ее задавать с помощью line-height).

    Для вертикального выравнивания содержимого ячеек таблиц в vertical-align следует использовать значения Top и Bottom для получения, соответственно, выравнивания содержимого по верхней и нижней границе ячейки (ну, а middle в ячейке таблицы используется как значение вертикального выравнивания по умолчанию).

    А для шрифтовых элементов можно использовать text-top, text-bottom, middle. Давайте для примера применим к этому фрагменту текста значение:

    vertical-align:middle;

    Что получилось в результате? По базовой линии обычного текста выровнялась средняя линия увеличенного фрагмента, т.е. мы получили вертикальное выравнивание по средней линии. Для text-top и text-bottom будет все аналогично. Вот так text-top, а так text-bottom.

    Значения Css свойства vertical-align sub и super соответствуют под- и надиндексу, которые имели место быть в чистом Html (до использования CSS свойств для визуального оформления).

    Text-transform, letter-spacing, word-spacing и white-space

    Дальше у нас на очереди text-transform — трансформация символов. Оно так же применяется к любым Html элементам (и блочным, и строчным) и может иметь всего четыре значения:

    None используется по умолчанию и означает, что символы в тексте изменяться никак не будут — как написано в Html, так и будут отображаться. Значение Uppercase для text-transform позволит трансформировать все буквы фрагмента в заглавные (пример показан в этом предложении, где использовалось правило text-transform:uppercase, а изначально буквы были написаны строчные).

    Значение lowercase для Css правила text-transform позволит вам трансформировать все символы фрагмента в строчные, ну, а значение capitalize сделает все первые буквы слова заглавными (пример в этом предложении — text-transform:capitalize). Т.е. с помощью text-transform можно сделать все что угодно с обычным текстом, а потом запросто все вернуть обратно.

    Поэтому, если у вас, например, стоит задача сделать все заголовки написанными только заглавными буквами, то в Html пишите их обычно, а заглавными их сделаете уже в CSS через text-transform:uppercase. Потом, если вы решите что-то поменять назад, то достаточно внести только маленькое изменение в стили, а не в содержимое всех 100500 заголовков на вашем сайте.

    Дальше давайте рассмотрим CSS правила, которые позволят нам изменять расстояния между символами и словами — letter-spacing и word-spacing. Оба эти правила могут иметь два типа значений:

    По умолчанию и letter-spacing, и word-spacing имеют значение Normal, ну или это тоже самое, что ноль (т.е. расстояние между символами и словами никак не изменяется). Величину же изменения расстояния в этих правилах можно будет указывать только в пикселах, либо Em или Ex, но никак не в процентах.

    Однако, можно использовать как положительные (разрежение символов или слов), так и отрицательные значения (сближение символов или слов). Например, можно «вот так разредить символы в этой фразе» с помощью следующего Css правила:

    letter-spacing:0.4em;

    Или же можно «вот так сблизить символы в этой фразе» с помощью:

    letter-spacing:-1px;

    Тоже самое можно сказать и про word-spacing с одной лишь только разницей, что при этом расстояние будет изменяться уже между словами, как, например, в этой фразе, при помощи вот такой вот CSS конструкции:

    word-spacing:4em;

    Аналогично можно использовать в word-spacing отрицательные значения для уменьшения расстояния между словами.

    Ну, и последнее на сегодня Css правило, которое позволяет определенным образом оформлять текст в Html коде — это white-space. Отвечает оно за отображение пробельных символов на веб странице, которые имели место быть при написании Html кода.

    Как вы помните из статьи про символы пробела в Html, браузер при разборе кода объединяет все пробелы, символы переноса строк и табуляции в один единственный пробел, и осуществляет перенос строк на веб странице именно по пробельным символам, которые имели место быть в коде.

    Так вот, white space может принимать одно из трех значений:

    Понятно, что по умолчанию используется значение Normal и в этом случае все отображается так, как я описал чуть выше. А вот при использовании значения Pre мы получим полную аналогию с использованием тега Pre в чистом Html, т.е. на вебстранице текст будет отображен со всеми теми лишними пробельными символами, которые имели место быть при написании кода и переносы браузер уже по ним сделать не сможет.

    Ну, а значение nowrap просто запретит браузеру переносить по тем пробельным символам, которые он найдет внутри фрагмента с CSS правилом white-space:nowrap. Попробовать, как все это работает, вы сможете и сами, создав простенький Html файлик и заключив любой фрагмент текста в подобные теги:

    <div>фрагмент подопытного текста</div>

    Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

    html — Как мне вертикально выровнять текст в div?

    Есть несколько уловок для отображения содержимого или изображения в центре div. Некоторые ответы действительно хороши, и я тоже полностью согласен с ними.

    Абсолютное горизонтальное и вертикальное центрирование в CSS

    http://www.css-jquery-design.com/2013/12/css-techniques-absolute-horizontal-and-vertical-centering-in-css/

    Имеется более 10 методик с примерами. Теперь вам решать, что вы предпочитаете.

    Безусловно, дисплей: стол; display: table-Cell — лучший трюк.

    Вот несколько хороших приемов:

    Уловка 1 — Используя дисплей : таблица; дисплей: таблица-ячейка

    HTML

      
    СОДЕРЖАНИЕ

    Код CSS

      .Центр-контейнер.is-Table {display: table; }
    .is-Table .Table-Cell {
      дисплей: таблица-ячейка;
      вертикальное выравнивание: по центру;
    }
    .is-Table .Center-Block {
      ширина: 50%;
      маржа: 0 авто;
    }
      

    Уловка 2 — Используя дисплей : встроенный блок

    HTML

      
    СОДЕРЖАНИЕ

    Код CSS

      .Center-Container.is-Inline {
      выравнивание текста: центр;
      перелив: авто;
    }
    
    .Center-Container.is-Inline: после,
    .is-Inline .Center-Block {
      дисплей: встроенный блок;
      вертикальное выравнивание: по центру;
    }
    
    .Center-Container.is-Inline: после {
      содержание: '';
      высота: 100%;
      маржа слева: -0,25em; / * Чтобы сместить интервал. Может отличаться в зависимости от шрифта * /
    }
    
    .is-Inline .Center-Block {
      максимальная ширина: 99%; / * Предотвращает проблемы с длинным содержимым, заставляет блок содержимого перемещаться наверх * /
      / * max-width: calc (100% - 0,25em) / * Только для Internet & nbsp; Explorer 9+ * /
    }
      

    Уловка 3 — Используя положение: относительное; положение: абсолютное

      
    АБСОЛЮТНЫЙ ЦЕНТР,

    В КОНТЕЙНЕРЕ.

    Этот блок абсолютно центрирован по горизонтали и вертикали внутри своего контейнера

    text-align — CSS: каскадные таблицы стилей

    Свойство CSS text-align устанавливает горизонтальное выравнивание содержимого внутри элемента блока или поля ячейки таблицы. Это означает, что он работает как vertical-align , но в горизонтальном направлении.

     
    выравнивание текста: начало;
    выравнивание текста: конец;
    выравнивание текста: слева;
    выравнивание текста: вправо;
    выравнивание текста: центр;
    выравнивание текста: выравнивание;
    выравнивание текста: выравнивание-все;
    выравнивание текста: соответствие родительского;
    
    
    выравнивание текста: ".";
    выравнивание текста: "." центр;
    
    
    выравнивание текста: -moz-center;
    выравнивание текста: -webkit-center;
    
    
    выравнивание текста: наследование;
    выравнивание текста: начальное;
    выравнивание текста: вернуться;
    выравнивание текста: отключено;
      

    Свойство text-align задается одним из следующих способов:

    • Использование значений ключевого слова начало , конец , слева , справа , по центру , по ширине , по ширине - все или соответствие родительскому .
    • Использование только значения , в этом случае другое значение по умолчанию — справа .
    • Использование значения ключевого слова и значения .

    Значения

    начало

    То же, что и слева, , если направление слева направо, и справа, , если направление справа налево.

    конец

    То же, что и справа, , если направление слева направо, и слева, , если направление справа налево.

    слева

    Встроенное содержимое выравнивается по левому краю строчного поля.

    правый

    Встроенное содержимое выравнивается по правому краю строчного поля.

    центр

    Встроенное содержимое центрируется в рамке строки.

    по ширине

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

    оправдать-все

    То же, что и , выравнивание , но также принудительное выравнивание последней строки.

    Совместный родитель

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

    <строка>

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

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

    Начальное значение start или безымянное значение, которое действует как left , если направление равно ltr , право , если направление равно rtl , если start не поддерживается браузер.
    Применимо к блок-контейнерам
    Унаследовано да
    Вычисленное значение , как указано, за исключением совпадающего родительского значения , которое рассчитывается относительно значения и результатов его родительского направления в вычисленном значении слева или справа
    Тип анимации дискретный
     начало | конец | слева | право | центр | оправдать | match-parent 

    Начало выравнивания

    HTML
      

    Целочисленный элемент массы в пустом месте varius.Suspendisse in libero risus, in interdum massa. Vestibulum ac leo vitae metus faucibus gravida ac in neque. Nullam est eros, suscipit sed dictum quis, accumsan a ligula.

    CSS
      .example {
      выравнивание текста: начало;
      граница: сплошная;
    }
      
    Результат

    Текст по центру

    HTML
      

    Целочисленный элемент массы в пустом месте varius. Suspendisse in libero risus, in interdum massa. Vestibulum ac leo vitae metus faucibus gravida ac in neque.Nullam est eros, suscipit sed dictum quis, accumsan a ligula.

    CSS
      .example {
      выравнивание текста: центр;
      граница: сплошная;
    }
      
    Результат

    Выровнять

    HTML
      

    Целочисленный элемент массы в пустом месте varius. Suspendisse in libero risus, in interdum massa. Vestibulum ac leo vitae metus faucibus gravida ac in neque. Nullam est eros, suscipit sed dictum quis, accumsan a ligula.

    CSS
      .example {
      выравнивание текста: выравнивание;
      граница: сплошная;
    }
      
    Результат

    Таблицы BCD загружаются только в браузере

    Выравнивание CSS - TutorialBrain

    На главную »CSS» CSS Align

    Выравнивание CSS - это способ выравнивания элементов HTML.

    По сути, это способ организации элементов. Важные выравнивания:

    • CSS Text align
    • CSS Vertical Align
    • CSS image align
    • CSS align div
    • CSS Table align
    • CSS float align

    Есть 3 важных способа выровнять текст.

    • По левому краю - выравнивание текста по левому краю.
    • Выровнять по центру - для выравнивания текста по центру.
    • Выровнять по правому краю - чтобы выровнять текст по правому краю.
    • Выровнять по одинаковой ширине линии - чтобы выровнять текст, растягивая и делая все строки одинаковой длины.

    Синтаксис выравнивания текста:
    выравнивание текста : слева ;
    выравнивание текста : центр ;
    выравнивание текста : справа ;
    выравнивание текста : выравнивание ;

     # text-align-left {
      выравнивание текста: слева;
      фон: цвет морской волны;
      красный цвет;
    }
    
    # text-align-center {
      выравнивание текста: центр;
      фон: желтый;
      цвет синий;
    }
    
    # text-align-right {
      выравнивание текста: вправо;
      фон: розовый;
      цвет: зеленый;
    }
     

    CSS выровнять по центру с использованием полей и ширины

    Теперь, как еще можно выровнять div по центру по горизонтали?

    Для этого мы можем добавить поле и фиксированную ширину к div, чтобы div не стал гибким.

    Поле : auto используется вдоль свойства width для выравнивания элемента, такого как div (или контейнер).

    margin: auto автоматически добавляет соответствующие поля, в то время как свойство width дает фиксированную ширину для div, чтобы div не расширялся.

    Теперь, как еще можно выровнять div по центру по горизонтали?

    Для этого мы можем добавить поле и фиксированную ширину к div, чтобы div не стал гибким.

    Поле : auto используется вдоль свойства width для выравнивания элемента, такого как div (или контейнер).

    margin: auto автоматически добавляет соответствующие поля, в то время как свойство width дает фиксированную ширину для div, чтобы div не расширялся.

    Примечание / информация:

    Если вы хотите выровнять div по центру, то одним из способов добиться этого является кодирование margin: auto вместе с ненулевым значением width: x (all действующие единицы) .

    Ширина должна быть больше 0% и меньше 100%

     .margin-auto {
      маржа: авто;
      ширина: 45%;
      цвет фона: черный;
      цвет: желтый;
    }
     

    В CSS. Один из самых популярных способов выровнять изображение по центру - выполнить следующие 2 шага:

    1. Установите автоматическое поле с помощью поля : auto . Если вы хотите выровнять только по горизонтали по центру, установите margin-left: auto & ma rgin-right: auto.
    2. Разрешить элементу изображения начинаться с новой строки и занимать всю ширину. Это устанавливается с помощью дисплея : блок
     # margin-block {
      фон: фиолетовый;
      маржа: авто;
      дисплей: блок;
      ширина: 50%;
      высота: 60%;
    }
     

    CSS Text vertical-align устанавливает вертикальное расположение текста.

    Синтаксис CSS Выровнять текст по вертикали:

    vertical-align: length; / * Здесь длина - это все применимые единицы измерения * /
    vertical-align: baseline; / * Устанавливает элемент на основе управления родительским элементом * /
    vertical -align: x%; / * x может быть положительным или отрицательным * /
    / * Если x> 0, текст упорядочивает себя на x% вверх
    Если x <0, текст упорядочивает себя на x% вниз * /
    vertical-align: middle; / * выравнивается по вертикали по направлению к середине родительского элемента * /
    vertical-align: sub; / * выравнивается по вертикали как нижний индекс родительского элемента * /
    vertical-align: super; / * выравнивается по вертикали как верхний индекс родительского элемента * /
    vertical-align: bottom; / * для выравнивания текста внизу.В основном используется в таблицах * /
    Другой менее используемый синтаксис: :
    vertical-align: top;
    выравнивание по вертикали: верхний текст;
    выравнивание по вертикали: нижний текст;

     #vertical_align_length {
      вертикальное выравнивание: 30 пикселей;
    }
    
    #vertical_align_baseline {
      вертикальное выравнивание: базовая линия;
    }
    
    # vertical_align_percent1 {
      вертикальное выравнивание: 30%;
    }
    
    # vertical_align_percent2 {
      вертикальное выравнивание: -40%;
    }
    
    #vertical_align_middle {
      вертикальное выравнивание: по центру;
    }
    
    #vertical_align_sub {
      вертикальное выравнивание: суб;
    }
    
    #vertical_align_super {
      вертикальное выравнивание: супер;
    }
     

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

    Точно так же есть способы вертикального выравнивания в div. Часто от нас требуется выровнять текст по вертикали по центру div. Давайте посмотрим, как это сделать -

     а) выравнивание по вертикали: по центру;
     

    Выравнивает текст по вертикали по центру. В предыдущем примере один из абзацев также использует свойство vertical-align: middle . Это работает даже для изображений, так что вы можете попробовать установить этот стиль и для своего тега «img».

    Примечание / информация:
    Если вы хотите центрировать текст на изображении, вы можете закодировать с выравниванием по вертикали , а также с высотой строки . Высота строки должна быть на больше или равна высоте изображения.

    Это позволит выровнять одну строку текста по вертикали по центру.

    Обычно это будет работать лучше, если вы установите высоту строки больше, чем размер шрифта текста, или высоту строки, равную высоте контейнера div.

    • Еще один момент, на который следует обратить внимание: этот процесс может не работать, если у вас более 1 строки текста.
    • Мы не рекомендуем использовать этот метод для центрирования текста на изображении, так как это усложнит вашу задачу.

    Пример использования line-height для вертикального центрирования

     # parent-height {
      фон: розовый;
      высота: 150 пикселей;
      ширина: 400 пикселей;
      выравнивание текста: центр;
    }
    
    # child-line-height {
      высота строки: 150 пикселей;
    }
     
     c)  Родительский div :
       дисплей: таблица;
    
         Детский div :
       дисплей: таблица-ячейка;
       вертикальное выравнивание: по центру;
     

    Это работает, когда у вас есть родительский div и с этим родительским div связан дочерний div.

    Итак, вы должны определить родительский div с display: table . Кроме того, вы должны закодировать дочерний div с помощью - display: table-cell & vertical-align: middle вместе.

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

    Выровнять по вертикали, используя отступы с выравниванием текста

    Другой способ выровнять элемент по вертикали (или даже по горизонтали) - использовать свойство padding с text-align.

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

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

     .v-align-padding {
      отступ: 20 пикселей 0;
      выравнивание текста: центр;
      граница: сплошной синий цвет 3px;
    }
    
    .h-align-padding {
      отступ: 0px 50px;
      выравнивание текста: центр;
      граница: сплошной розовый 3px;
    }
    
    .h-v-align-padding {
      отступ: 22px 50px;
      выравнивание текста: центр;
      граница: сплошной желтый цвет 3px;
    }
     

    Как мы видели, мы можем выровнять элемент по центру. Точно так же мы можем выровнять элементы по левому и правому краю. Важные способы достижения этого -

    • CSS Position property
    • CSS float

    CSS выровнять по левому краю с использованием свойства позиции

    В начале этой страницы мы увидели, как выровнять текст по левому краю с помощью свойства text-align: left .

    Таким же образом мы можем выровнять изображение по правому краю, таблицу вправо, согнуть вправо или div, используя свойство position: absolute и установить свойства left или right для выравнивания по левой или правой стороне по горизонтали. .

    CSS выровнять по правому краю, используя свойство позиции

    , мы можем использовать свойство position: absolute и установить свойства left или right для выравнивания по левой или правой стороне по горизонтали.

    TutorialBrain не рекомендует использовать position: absolute для выравнивания по левому или правому краю, так как это может привести к перекрытию элементов .

    Пример выравнивания по левому и правому краю с использованием позиции: абсолютное

     .absolute-right {
      позиция: абсолютная;
      вправо: 0 пикселей;
      ширина: 45%;
      фон: # 25e1a5;
    }
    
    .absolute-left {
      позиция: абсолютная;
      слева: 0px;
      ширина: 45%;
      фон: # ef1cd0;
    }
     

    Выровнять по левому и правому краю с помощью поплавка

    Свойство CSS float управляет плавным перемещением элементов.

    1. float: left - Чтобы переместить элемент (например, div) влево.
    2. float: right - перемещать элемент (например, div) вправо.
     .val1 {
    плыть налево;
    цвет фона: Темно-бирюзовый;
    отступ: 30 пикселей;
    }
    .val2 {
    float: right;
    цвет фона: оранжевый;
    отступ: 30 пикселей;
    }
     

    Интервью Вопросы и ответы CSS

    Text-align:
    В CSS свойство text-align используется для выравнивания текста влево, вправо, по центру или для выравнивания по центру текста, предоставляя равное пространство слева и справа.
    Синтаксис :

    • выравнивание текста: слева;
    • выравнивание текста: по правому краю;
    • выравнивание текста: по центру;
    • выравнивание текста: выравнивание;

    Свойство Vertical-align
    vertical-align: middle;

    CSS Text vertical-align устанавливает вертикальное расположение текста.

    Чтобы выровнять изображение в Центре, мы можем использовать эти два метода:

    Установите автоматическое поле с помощью параметра margin: auto. Если вы хотите выровнять только по центру по горизонтали, установите margin-left: auto и margin-right: auto.

    OR

    Разрешить элементу изображения начинаться с новой строки и занимать всю ширину. Это устанавливается с помощью display: block.

    Мы можем выровнять текст по левому, правому краю, по центру и выровнять текст по ширине, используя свойство CSS Align
    align: left; - выровнять по левому краю.
    выровнять: по центру; - выровнять по центру.
    выровнять: вправо; - выровнять по правому краю.
    выровнять: по ширине; - растянуть все линии одинаково.

    Как выровнять текст по вертикали по центру в DIV с помощью CSS

    Тема: HTML / CSSPrev | След.

    Ответ: используйте свойство CSS

    line-height

    Если вы попытаетесь выровнять текст по вертикали по центру внутри div с помощью правила CSS vertical-align: middle; у вас не получится.Предположим, у вас есть элемент div с высотой 50px , и вы разместили некоторую ссылку внутри div, которую хотите выровнять по вертикали по центру. Самый простой способ сделать это - просто применить свойство line-height со значением, равным высоте div, которое составляет 50px .

    Суть этого трюка заключается в том, что если значение свойства line-height больше, чем значение font-size для элемента, разница (так называемая «ведущая») уменьшается вдвое и распределяется равномерно. сверху и снизу встроенного блока, которые выравнивают встроенные элементы по вертикали по центру элемента.

    Давайте попробуем следующий пример, чтобы понять, как это работает на самом деле:

      
    
    
    
     Вертикально центрировать текст с помощью CSS 
    <стиль>
        .меню{
            высота: 20 пикселей;
            высота строки: 20 пикселей;
            отступ: 15 пикселей;
            граница: 1px solid # 666;
        }
    
    
    
        
    
      

    Связанные вопросы и ответы

    Вот еще несколько часто задаваемых вопросов по этой теме:

    CSS с выравниванием текста

    Пример <стиль> div { отступы: 0 2vw; окантовка: 2vw цельное золото; размер шрифта: 4vw; выравнивание текста: центр; }

    Мучитель у рисуса

    Auctor augue mauris augue neque gravida in fermentum.Euismod elementum nisi quis eleifend. Nec ultrices dui sapien.

    Свойство CSS text-align используется для выравнивания элементов влево, вправо, по центру и т. Д.

    Свойство text-align имеет долгую историю в спецификациях CSS.Его определение сильно изменилось с момента его появления в первом документе спецификации CSS в 1996 году.

    В своем последнем определении (по состоянию на август 2020 г.) свойство text-align определено как сокращенное свойство, которое «устанавливает свойства text-align-all и text-align-last и описывает, как внутреннее содержимое блока выравнивается по встроенной оси, если содержимое не полностью заполняет строковое поле. Значения, отличные от justify-all или match-parent , назначаются text-align-all и сбрасываются text-align-last до auto

    Хотя имя свойства - текст -align , оно применяется ко всему встроенному содержимому контейнера блока. Следовательно, он не ограничивается только выравниванием текста - он предназначен для выравнивания любого содержимого встроенного уровня в элементе уровня блока (если он не полностью заполняет контейнер блока).

    Важно отметить, что любое выравнивание, указанное с помощью text-align , соответствует , а не по отношению к области просмотра или содержащему блоку.Блок текста - это стопка строчных полей. Свойство text-align определяет, как блоки встроенного уровня в каждом строчном блоке выравниваются относительно начальной и конечной сторон строкового блока.

    Синтаксис

    выравнивание текста: начало | конец | слева | право | центр | оправдать | родитель-совпадение | оправдать-все

    Возможные значения

    начало
    Указывает, что содержимое встроенного уровня выровнено по начальному краю строкового блока.
    конец
    Указывает, что содержимое встроенного уровня выровнено по конечному краю строкового блока.
    слева
    Указывает, что содержимое встроенного уровня выровнено по левому краю строки линейного блока. (В режимах вертикального письма это будет физический верх или низ, в зависимости от значения свойства text-Ориентация .)
    правый
    Указывает, что содержимое встроенного уровня выровнено по правому краю строки линейного блока.(В режимах вертикального письма это будет физический верх или низ, в зависимости от значения свойства text-Ориентация .)
    центр
    Указывает, что содержимое встроенного уровня центрируется внутри строкового блока.
    по ширине
    Указывает, что текст выравнивается по ширине в соответствии с методом, указанным в свойстве выравнивание текста по ширине , чтобы точно заполнить поле строки.
    Соответствующий родитель
    Это значение ведет себя так же, как наследование (вычисляется по вычисленному значению своего родителя), за исключением того, что унаследованное ключевое слово start или end интерпретируется против значения направления своего родителя и приводит к вычисленному значению либо left или правый .
    выровнять все
    Устанавливает как text-align-all , так и text-align-last для выравнивания, принудительно выравнивая и последнюю строку.

    Новые значения в CSS3

    Спецификация CSS3 (в частности, текстовый модуль уровня 3) предложила четыре новых значения: начало , конец , начало , соответствие-родитель и начало-конец .

    С тех пор в спецификации было отказано от start-end и введено justify-all .

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

    Кроме того, все свойства CSS также принимают следующие значения ключевых слов всего CSS в качестве единственного компонента своего значения свойства:

    начальный
    Представляет значение, указанное в качестве начального значения свойства.
    наследовать
    Представляет вычисленное значение свойства родительского элемента.
    снято
    Это значение действует как наследует или как начальный , в зависимости от того, унаследовано свойство или нет.Другими словами, он устанавливает для всех свойств их родительское значение, если они наследуются, или их начальное значение, если они не наследуются.

    Общая информация

    Начальное значение

    CSS2: безымянное значение, которое действует как слева , если направление равно ltr , справа , если направление равно rtl .

    CSS 2.1: авто

    CSS3 (рабочий проект): начало

    Относится к
    Блок-контейнеры
    Унаследовано?
    Есть
    Анимационный
    Дискретный (см. Пример)

    Пример кода

    div { выравнивание текста: вправо; }

    Официальные спецификации

    Выравнивание текста CSS и отступ текста CSS

    Выравнивание текста, отступ

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

    Выравнивание текста

    Вы можете выровнять текст в документе по горизонтали и вертикали.

    Выравнивание текста по горизонтали

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


    пример
    выравнивание текста: слева

    Приведенный выше статус выравнивает текст по левой стороне документа.

    В следующем примере показано, как задать горизонтальное выравнивание различных типов в документе HTML.

    По центру

    В этой строке будет показано выравнивание по правому краю

    Пример Justyfy: вы можете выровнять текст в документе по горизонтали и вертикали. При горизонтальном выравнивании вы можете снова выровнять текст по правому, левому, центрировать и обосновывать. В этом абзаце показано, как выполнить выравнивание: будет отображаться выравнивание.

    вывод

    Вертикальное выравнивание текста

    В Vertical Text Alignment вы можете управлять вертикальным расположением внутри содержащего элемента.

    При вертикальном выравнивании базовая линия — это значение по умолчанию, которое выравнивает текст по базовой линии родительского элемента.

    пример
    img { вертикальное выравнивание: нижний текст; }

    Отступ текста

    Text Indenting позволяет нам вставлять заданную длину перед начальной строкой текста.

    п{ текстовый отступ: 20 пикселей; }

    В следующих примерах показано, как установить стиль отступа текста в html-документе.

    Эта строка вставляет 60 пикселей перед началом только первой строки, следующие строки начинаются с левого поля

    Эта строка вставляет 120 пикселей пространства перед началом только первой строки, следующие строки начинаются с левого поля

    вывод

    Высота строки

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

    п{ высота строки: 2; }

    высота строки 2em эквивалентна высоте строки 2

    В следующем примере показаны два абзаца, один с нормальной высотой строки, а другой с высотой строки: 2

    Эта строка устанавливает нормальную высоту строки, поэтому она должна принимать значение высоты строки по умолчанию normal.


    Эта строка устанавливает высоту строки равной 2, что означает, что расстояние между строками равно 2em.

    вывод

    Как выровнять текст в CSS

    Свойство text-align в CSS используется для выравнивания текста.Это свойство CSS используется для установки горизонтального выравнивания поля ячейки таблицы или элемента блока. Это похоже на свойство vertical-align, но в горизонтальном направлении.

    Свойство text-align включает такие значения, как justify, center, right, left, initial и наследовать . Он определяет горизонтальное выравнивание текста в элементе.

    Синтаксис

    выравнивание текста: выравнивание | центр | слева | право | начальный | наследование;

    Значение justify растягивает содержимое элемента для отображения одинаковой ширины каждой строки и обычно используется в журналах и газетах.Значение left выравнивает текст по левому краю, тогда как значение right используется для выравнивания по правому краю. Значение center используется для центрирования встроенного текста.

    Давайте разберемся с этим на примере.

    Пример

    В этом примере мы используем все значения свойства text-align .

    свойство text-align <стиль> h3, h5 { выравнивание текста: центр; } .главный { граница: сплошной черный 1px; маржа: 10 пикселей; размер шрифта: 14 пикселей; } #оправдывать { выравнивание текста: выравнивание; } #левый { выравнивание текста: слева; } #Правильно { выравнивание текста: вправо; } #center { выравнивание текста: центр; }

    свойство text-align

    выравнивание текста: выравнивание;
    Привет, добро пожаловать в javaTpoint.com. Этот сайт разработан для того, чтобы студенты могли легко изучать технологии, связанные с информатикой. JavaTpoint.com всегда предоставляет простые и подробные учебники по различным технологиям. Никто не совершенен в этом мире, и ничто не вечно лучше. Но мы можем попытаться стать лучше.
    выравнивание текста: слева;
    Привет, добро пожаловать на сайт javaTpoint.com. Этот сайт разработан для того, чтобы студенты могли легко изучать технологии, связанные с информатикой.JavaTpoint.com всегда предоставляет простые и подробные учебники по различным технологиям. Никто не совершенен в этом мире, и ничто не вечно лучше. Но мы можем попытаться стать лучше.
    выравнивание текста: справа;
    выравнивание текста: центр;
    Привет, добро пожаловать на сайт javaTpoint.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *