Содержание
Вертикальное выравнивание строчных элементов. | CSS-Tricks по-русски
Вертикальное выравнивание строчных элементов.
В CSS есть такое свойство, называется vertical align. И я думаю, вы не первый раз слышите об этом. Простейшее использование выглядит так:
img {
vertical-align : middle;
}
Обратите внимание, что в этом случае использования, свойство применяется к элементу img. Поскольку изображения являются строчными элементами, то располагаются они в строке, как если бы они были простым текстом. Но что именно значит «располагаются в строке»? Вот именно здесь появляется понятие «вертикальное выравнивание».
Атрибут может принимать следующие значения: baseline, sub, super, top, text-top, middle, bottom, text-bottom, length, или значение в процентах..
Некоторые пытаются использовать это свойство для элементов блочного уровня и, естественно, не получают ожидаемого результата. То есть если вы разместите один div внутри другого и захотите вертикально центрировать его, то vertical-align вам не поможет. Как поступать в таком случае я расскажу в отдельной статье.
Baseline
Значением по умолчанию для vertical-align является baseline. Изображения будут находиться на одной линии с текстом. Обратите внимание, что выступающие элементы символов, выступают за базовую линию. Картинки не выравниваются по этим выступам, поскольку это не базовая линия.
Middle
Возможно, наиболее используемое значение для vertical-align — это «middle» для изображений-иконок. Результат получается довольно кросс-браузерным.
Браузер центрирует высоту текста в пикселях с высотой картинки, опять же, в пикселях:
Необходимо запомнить, если изображение больше чем текущий размер шрифта и высота строки, то оно будет «вытолкнуто» вниз, если это необхоимо.
Text-bottom
Отличается от baseline тем, что изображение выравнивается по нижней линии текста (не базовая линия, а по линии выступающих частей текста). Картинки могут быть выравнены по этой линии таким образом:
Text-top
Противоположностью значения text-bottom является text-top. Самая высокая точка строки текста при текущем размере шрифта. Таким образом вы можете выровнять изображение по этой линии. Обратите внимание, что в примере используется шрифт Georgia, у которого, возможно, есть элементы выше, чем на рисунке. Поэтому вы видите небольшой отступ.
Top и Bottom
Top и Bottom работаю подобно свойствам text-top и text-bottom, но при выравнивании расчёт происходит не по высоте текущего текста, а по высоте максимального элемента в строке (например другой картинки). И при расопложении учитывается именно его верх (или низ).
Sub и Super
Эти значения используются для верхних (superscript) и нижних (subscript) индексов. При использовании этих значений, элементы выстраиваются таким образом:
Vertical Align on Table Cells
В отличии от картинок, у таблиц по умолчанию используется выравнивание по центру (middle).
Если вы хотите выровнять текст по верху или низу ячейки, используйте значения top и bottom для vertical-alignment:
Для вертикального выравнивания в ячейках таблицы, лучше всего использовать только эти значения (top, middle, bottom). Использование других значений может привести к непредсказуемым результатам в разных броузерах. Например, text-bottom прижимает текст к низу в IE 6, а в Safari 4 — к верху. Установка значения sub выравнивает по центру в IE 6, а в Safari 4, опять же, по верхней линии.
Vertical Align и элементы Inline-Block
Изображения, которые технически являются элементами строчного уровня, больше похожи по поведению на элементы с поведением inline-block, потому что можете им устанавливать размеры.
Inline-block-элементы, при вертикальном выравнивании, ведут себя точно так же, как картинки. Однако, стоит помнить, что не все броузеры обрабатывают inline-block-элементы одинаково, и поэтому vertical-align может не оправдать ваших ожиданий. Хотя это уже другая история…
Атрибут «valign»
Иногда вы можете встретить атрибут «valign» для вертикального выравнивания в ячейках таблицы (например, <td valign=top>. Стоит отметить, что этот атрибут является устаревшим и не должен использоваться. Да и зачем, если вы можете добиться желаемого, используя CSS.
CSS: Вертикальное выравнивание текста
Часто при вёрстке возникает потребность в вертикальном выравнивании текста в блоке. Если это нужно сделать в ячейке таблицы, то задается значение CSS-свойства vertical-align.
Но возникает резонный вопрос, нельзя ли обойтись без таблицы, без перегрузки разметки страницы лишними тегами? Ответ: «можно», но из-за плохой поддержки CSS браузером MSIE решение задачи для него будет отличаться от решения для остальных распространённых браузеров.
В качестве примера рассмотрим следующий фрагмент:
<style type="text/css">
div {
border: 1px solid #000;
height: 10em;
width: 10em;
}
</style>
<div>
<span>Some text</span>
</div>
и попытаемся вертикально выровнять текст по центру блока и по нижнему краю блока.
Решение задачи
«Правильные» браузеры (включая MSIE
Большинство современных браузеров поддерживают CSS2.1, а именно значение table-cell для свойства display. Это даёт нам возможность заставить блок с текстом отображаться как ячейка таблицы и, воспользовавшись этим, выровнять текст по вертикали:
div {
display: table-cell;
vertical-align: middle;
}
или
div {
display: table-cell;
vertical-align: bottom;
}
Internet Explorer (до 7-й версии включительно)
Решить задачу выравнивания текста по нижнему краю блока в MSIE можно с помощью абсолютного позиционирования (тут нам пригодится строковой элемент вложенный в блок):
div {
position: relative;
}
div span {
display: block;
position: absolute;
bottom: 0%;
left: 0%;
width: 100%;
}
Этот набор правил работает и в «правильных» браузерах.
Указывать свойства
div span {
display: block;
width: 100%;
}
не обязательно, но они могут понадобиться, если помимо вертикального выравнивания текста планируется использовать также горизонтальное, например, text-align: center
;.
Для вертикального выравнивания текста по центру блока исходный фрагмент придётся всё же усложнить — введём ещё один строковый элемент:
<div>
<span><span>Some text</span></span>
</div>
Тогда искомый набор правил будет иметь следующий вид:
div {
position: relative;
}
div span {
display: block;
position: absolute;
top: 50%;
left: 0%;
width: 100%;
}
div span span {
position: relative;
top: -50%;
}
Смысл этого решения в том, что внутренний элемент позиционируется по вертикали абсолютно на половине высоты блока, а затем смещается вверх на половину собственной высоты. Используется неправильная интерпретация высоты в MSIE.
Существует другой способ решения этой задачи для MSIE — использование expression
. Недостаток этого подхода — выравнивание не будет работать при отключенном Javascript, зато он позволяет обойтись меньшим количеством элементов-«оберток» (в идеальном случае вообще без них).
Заключение
Для практического использования остаётся только объединить решения для «правильных» браузеров и MSIE любым приемлемым способом (например, через условные комментарии).
Материал для изучения:
- Vertical Centering in CSS (www.jakpsatweb.cz/css/css-vertical-center-solution.html)
- Vertical centering using CSS (www.student.oulu.fi/%7Elaurirai/www/css/middle/)
- Vertical align (www.cssplay.co.uk/ie/valign.html)
- vertical-align:middle (cssing.org.ua/2005/07/14/vertical-align-middle/)
- Еще один способ вертикального выравнивания в CSS (cssing.org.ua/2007/04/26/another-css-valign-method)
Выравнивание, стили шрифта и горизонтальные линии документах HTML
Выравнивание, стили шрифта и горизонтальные линии документах HTML
В этом разделе спецификации рассматриваются элементы и атрибуты HTML, которые используются для визуального форматирования элементов. Многие из них не рекомендуется применять.
15.1 Форматирование
15.1.1 Цвет фона
Определение атрибута
- bgcolor = color [CI]
- Не рекомендуется. Этот атрибут устанавливает цвет фона документа или ячеек таблицы.
Этот атрибут устанавливает цвет фона «канвы» тела документа (элемент BODY) или таблицы (элементы TABLE, TR, TH и TD).
Дополнительные атрибуты, устанавливающие цвет текста, могут использоваться с элементом BODY.
Этот атрибут не рекомендуется использовать для определения цвета фона. Лучше использовать таблицы стилей.
15.1.2 Выравнивание
Можно выравнивать блок элементов (таблицы, изображения, объекты, параграфы и т.п.) на «канве» с помощью атрибута align. Хотя этот атрибут может быть установлен для многих элементов HTML, диапазон его значений может отличаться, в зависимости от элемента. Здесь мы обсуждаем только
значение атрибута «выравнивание» для текста.
Определение атрибута
- align = left|center|right|justify [CI]
- Не рекомендуется. Этот атрибут определяет горизонтальное выравнивание элемента по отношению к окружающему контексту. Возможные значения:
- left: строки текста выравниваются по левому краю;
- center: строки текста выравниваются по центру;
- right: строки текста выравниваются по правому краю;
- justify: строки текста выравниваются по обоим полям.
Значение по умолчанию зависит от базового направления текста. Для направления слева направо — это align=left, для направления справа налево — по умолчанию align=right.
НЕ РЕКОМЕНДУЕТСЯ:
Здесь заголовок центрируется.
<h2 align="center"> Что за прелесть эта мерзость! </h2>
Используя CSS (каскадные таблицы стилей), например, Вы можете достичь того же эффекта следующим образом:
<HEAD> <TITLE>Что за прелесть эта мерзость!</TITLE> <STYLE type="text/css"> h2 { text-align: center} </STYLE> <BODY> <h2> Что за прелесть эта мерзость! </h2>
Учтите, что это будет действовать на все элементы h2. Вы можете ограничить область видимости стиля, установив атрибут class элемента:
<HEAD> <TITLE>Что за прелесть эта мерзость!</TITLE> <STYLE type="text/css"> h2.wood {text-align: center} </STYLE> <BODY> <h2> Что за прелесть эта мерзость! </h2>
НЕ РЕКОМЕНДУЕТСЯ:
также, для того, чтобы выровнять вправо параграф на «канве» атрибутом HTML align, Вы могли бы записать:
<P align="right">...параграф текста...
что в таблице стиля могло бы быть:
<HEAD> <TITLE>Что за прелесть эта мерзость!</TITLE> <STYLE type="text/css"> P.mypar {text-align: right} </STYLE> <BODY> <P>...параграф текста...
НЕ РЕКОМЕНДУЕТСЯ:
Чтобы выровнять вправо несколько параграфов, сгруппируйте их элементом DIV:
<DIV align="right"> <P>...текст первого параграфа... <P>...текст второго параграфа... <P>...текст третьего параграфа... </DIV>
В таблице стиля свойство выравнивания текста наследуется от предка, поэтому Вы можете использовать:
<HEAD> <TITLE>Что за прелесть эта мерзость!</TITLE> <STYLE type="text/css"> DIV.mypars {text-align: right} </STYLE> <BODY> <DIV> <P>...текст первого параграфа... <P>...текст второго параграфа... <P>...текст третьего параграфа.. </DIV>
Чтобы выровнять по центру весь документ:
<HEAD> <TITLE>Что за прелесть эта мерзость!</TITLE> <STYLE type="text/css"> BODY {text-align: center} </STYLE> <BODY> ...тело выровнено по центру... </BODY>
Элемент CENTER полностью эквивалентен определению элемента DIV с атрибутом align, установленным в «center». Элемент CENTER не
рекомендуется.
15.1.3 Плавающие объекты
Изображения и объекты могут появляться непосредственно «in-line» или «всплывать» к одной из сторон страницы, изменяя временно поля текста, который может обтекать объект по любой его стороне.
«Всплывание» объекта
Атрибут align объектов, изображений, таблиц, фрэймов и т.п. заставляет объект прижиматься к левому или правому полю страницы. Плавающие объекты обычно начинают новую строку. Этот атрибут принимает следующие значения:
- left: прижимает объект к левому краю. Последующий текст обтекает объект справа.
- right: прижимает объект к правому краю. Последующий текст обтекает объект слева.
ПРИМЕР НЕ РЕКОМЕНДУЕМОГО ИСПОЛЬЗОВАНИЯ:
Пример показывает. как элемент IMG «всплывает» к левому краю «канвы».
<IMG align="left" src="http://foo.com/animage.gif" alt="my boat">
Некоторые атрибуты выравнивания также допускают значение «center», которое не вызывает всплывания, а центрирует объект по отношению к краям. В то же время, у элементов P и DIV,
значение «center» вызывает центрирование содержимого элементов.
Обтекание текста вокруг объекта
Ещё один атрибут, определённый для элемента BR, управляет обтеканием текста вокруг «всплывающего» объекта.
Определение атрибута
- clear = none|left|right|all [CI]
- Не рекомендуется. Определяет, где должна появиться следующая строка после обрыва строки, сделанного этим элементом. Этот атрибут учитывает плавающие объекты (изображения, таблицы и т.д.). Возможные значения:
- none: следующая строка начнётся нормально. Это значение по умолчанию.
- left: следующая строка начнётся в ближайшей строке под любым плавающим объектом у левого края.
- right: следующая строка начнётся в ближайшей строке под любым плавающим объектом у левого края.
- all: следующая строка начнётся в ближайшей строке под любым плавающим объектом у любого края.
Посмотрите на этот рисунок. Текст обтекает изображение по правому краю до обрыва строки элементом BR:
********* ------- | | ------- | image | --<BR> | | *********
Если атрибут clear установлен в none, линия, следующая после BR, начнётся сразу под ним у правого края изображения:
********* ------- | | ------- | image | --<BR> | | ------ *********
НЕ РЕКОМЕНДУЕТСЯ:
Если атрибут clear установлен в left или all, следующая строка появится так:
********* ------- | | ------- | image | --<BR clear="left"> | | ********* -----------------
Используя таблицы стилей, Вы можете установить, чтобы все обрывы строки вели себя одинаково для объектов (изображений, таблиц и т.д.), «всплывая» у левого края. В таблице стилей Вы можете записать:
<STYLE type="text/css"> BR { clear: left } </STYLE>
Чтобы определить такое поведение для конкретного элемента BR, нужно скомбинировать информацию о стиле и атрибут id:
<HEAD> ... <STYLE type="text/css"> BR#mybr { clear: left } </STYLE> </HEAD> <BODY> <P>... ********* ------- | | ------- | table | --<BR> | | ********* ----------------- ... </BODY>
Последующие элементы HTML специфицируют информацию о шрифте. Хотя они и не относятся к не рекомендуемым, их использование менее предпочтительно, чем таблиц стилей.
15.2.1 Элементы стиля шрифта:
TT, I, B, BIG, SMALL, STRIKE, S и U
Начальный тег: необходим, Конечный тег: необходим
Атрибуты, определённые в другом месте
- id, class (идентификаторы документа)
- lang (язык), dir (направление текста)
- title (название элемента)
- style (инлайн-стиль)
- onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown onkeyup (внутренние
события)
Представление элементов стиля шрифта зависит от пользовательского агента (ПА). Следующее описание является лишь информативным.
- TT: моноширинный текст, телетайп.
- I: курсив.
- B: полужирный.
- BIG: «большой» шрифт.
- SMALL: «малый» шрифт.
- STRIKE и S: не рекомендуются, зачёркнутый текст.
- U: не рекомендуется, подчёркнутый.
Вот несколько примеров определения шрифта:
<P><b>bold</b>, <i>italic</i>, <b><i>bold italic</i></b>, <tt>teletype text</tt>, and <big>big</big> and <small>small</small> text.
Это будет отображено так:
Можно применить более сложные варианты отображения шрифтов, используя таблицы стилей. Чтобы отобразить голубой курсив в параграфе с помощью таблицы стилей (CSS):
<HEAD> <STYLE type="text/css"> P#mypar {font-style: italic; color: blue} </STYLE> </HEAD> <P>...голубой курсив...
Элементы стиля шрифта должны вкладываться соответствующим образом. Отображение вложенных элементов стиля шрифта зависит от ПА.
15.2.2 Элементы модификатора шрифта:
FONT и BASEFONT
FONT и BASEFONT не рекомендуется применять.
См. формальное определение в разделе Переходное ОТД.
Определения атрибутов
- size = cdata [CN]
- Не рекомендуется. Устанавливает размер шрифта. Возможные значения:
- Целое число от 1 до 7. Устанавливает шрифт в определённый фиксированный размер, представление которого зависит от ПА. Не все ПА могут отобразить все семь размеров.
- Относительное увеличение размера шрифта. «+1» означает: на один размер больше. «-3» означает: на три размера меньше. Все размеры находятся в пределах шкалы от 1 до 7.
- color = color [CI]
- Не рекомендуется. Устанавливает цвет текста.
- face = cdata [CI]
- Не рекомендуется. Определяет список имён шрифтов, разделённых запятыми, которые ПА должен искать в порядке убывания приоритета.
Атрибуты, определённые в другом месте
Элемент FONT изменяет размер шрифта и цвет текста своего содержимого.
Элемент BASEFONT устанавливает базовый размер шрифта (используя атрибут size). Размер шрифта, определяемый FONT, является относительным
по отношению к BASEFONT. Если BASEFONT не используется, размер базового шрифта составляет 3.
НЕ РЕКОМЕНДУЕТСЯ:
В этом примере показана разница между шрифтами семи размеров элемента FONT:
<P><font size=1>size=1</font> <font size=2>size=2</font> <font size=3>size=3</font> <font size=4>size=4</font> <font size=5>size=5</font> <font size=6>size=6</font> <font size=7>size=7</font>
Это может выглядеть так:
А это пример относительного изменения размера шрифта с использованием базового размера 3:
Базовый размер шрифта не применяется к заголовкам/headings, за исключением тех случаев, когда заголовки изменены с использованием относительного изменения размера в элементе FONT.
15.3 Горизонтальные линии: элемент
HR
Начальный тег: необходим, Конечный тег: запрещён
Определение атрибутов
- align = left|center|right [CI]
- Не рекомендуется. Определяет горизонтальное выравнивание линии по отношению к окружающему контексту. Возможные значения:
- left: линия выравнивается влево.
- center: линия выравнивается по центру.
- right: линия выравнивается вправо.
По умолчанию align=center.
- noshade [CI]
- Не рекомендуется. Если этот булев атрибут установлен, он требует, чтобы ПА отображал горизонтальную линию сплошным цветом, а не традиционно с двухцветной «тенью».
- size = pixels [CI]
- Не рекомендуется. Определяет высоту линии. Значение по умолчанию зависит от ПА.
- width = length [CI]
- Не рекомендуется. Определяет ширину линии. Ширина по умолчанию — 100%, т.е. линия растянута по ширине всей «канвы».
Атрибуты, определённые в другом месте
- id, class (идентификаторы документа)
- lang (язык), dir (направление текста)
- title (название элемента)
- style (инлайн-стиль)
- onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние
события)
Элемент HR отображает горизонтальную линию в ПА.
Величина свободного пространства под и над горизонтальной линией зависит от ПА.
НЕ РЕКОМЕНДУЕТСЯ:
В этом примере линия центрируется, размер установлен в половину доступной ширины между краями страницы. Верхняя линия имеет толщину по умолчанию, а две нижние — по 5 пикселов. Нижняя линия должна отображаться сплошным цветом без тени:
<HR align="center"> <HR size="5" align="center"> <HR noshade size="5" align="center">
Эти линии должны выглядеть примерно так:
Выравнивание: свойство ‘text-align’ — HTML, CSS, JavaScript, Perl, PHP, MySQL: Weblibrary.biz
‘text-align’
Значение: left | right | center | justify | <string> | inherit
Начальное значение: зависит от агентов пользователей и направление написания
Область применения: элементы уровня блока
Наследование: да
Процентное задание: не используется
Устройства: визуальные
Это свойство определяет способ выравнивания последовательного содержимого блока. Значения имеют следующий смысл:
left, right, center и justify
Выравнивание текста по левому или правому краю, по центру и по обоим краям соответственно.
<строка>
Определяет строку, по которой будет производиться выравнивание ячеек в абзацах таблицы (подробную информацию и примеры можно найти в разделе горизонтальное выравнивание абзаца). Это значение применяется только к ячейкам таблицы. Применительно к другим элементам значение будет трактоваться как ‘left’ или ‘right’, в зависимости от значения свойства ‘direction’: ‘ltr’ или ‘rtl’ соответственно.
Блок текста – это совокупность линейных блоков. При значениях ‘left’, ‘right’ и ‘center’ это свойство указывает способ выравнивания последовательных блоков в каждом линейном блоке относительно левой и правой стороны линейного блока; выравнивание производится не относительно области вывода. При значении ‘justify’ помимо настройки положения линейных блоков, агент пользователя может также увеличить последовательные блоки. (См. также ‘letter-spacing’ и ‘word-spacing’.)
В этом примере обратите внимание на то, что значение ‘text-align’ наследуется, поэтому во всех элементах уровня блока, находящихся в элементе DIV и имеющих значение ‘class=center’, последовательное содержимое будет выровнено по центру.
DIV.center { text-align: center }
Примечание. Алгоритм, фактически используемый для выравнивания, зависит от агента пользователя и используемого языка.
Конформные агенты пользователей могут интерпретировать значение ‘justify’ как ‘left’ или ‘right’, это зависит от основного направления написания элемента: слева направо или справа налево соответственно.
Красивое выравнивание блоков по резиновой сетке — CSS-LIVE
Сегодня, в мой день рождения (26 апреля), я хочу сделать подарок всем верстальщикам и представить вам абсолютно уникальное, новое и самое главное — полезное решение выравнивания блоков по резиновой сетке, которого так все долго ждали и которого ещё нет в сети.
При верстке резиновых страниц часто возникает задача выстроить однотипные блоки (например, товары в каталоге или фотографии в галерее) по сетке, наподобие таблицы, но гибкой, с заранее неизвестным количеством столбцов. Когда-то единственным способом для этого был float, и блоки приходилось прижимать к левому краю. С помощью inline-block эту задачу можно решить проще и гибче, блоки могут иметь разную высоту, и разное вертикальное выравнивание. Но почему-то такие макеты в массе всё равно прижаты к левому краю. Казалось бы, что мешает отцентрировать эту сетку, а то и вовсе растянуть ее по ширине свободного места c помощью text-align: center или justify соответственно?
Проблема возникает в последней строке, на которой горизонтальный ритм сетки сбивается. Но оказалось, что эту проблему можно решить!
Проблема
Для начала предлагаю обсудить этот вопрос подробнее. Посмотреть примеры того, что именно за неприятность происходит с последней строкой в сетке, а так же определиться, какого результата мы ждём.
Проблема очень похожа в обоих случаях, так что выберем любое свойство из двух, например, text-align: center. А так же воспользуемся маркированным списком.
<ul> <li>Пункт 1</li> <li>Пункт 2</li> <li>Пункт 3</li> <li>Пункт 4</li> <li>Пункт 5</li> <li>Пункт 6</li> <li>Пункт 7</li> <li>Пункт 8</li> </ul>
ul { font: 14px Verdana, Geneva, sans-serif; text-align: center; } ul li { display : inline-block; width : 80px; height: 80px; margin-bottom: 10px; background: #E76D13; vertical-align: top; text-align: center; line-height: normal; /* эмуляция inline-block для IE6-7*/ //display : inline; //zoom : 1; }
Ничего необычного в коде нет. Обычный список, всё те же старые добрые элементы строчно-блочного (display : inline-block) уровня. Самое пожалуй интересное, что стоит выделить, это text-align: center, благодаря которому и происходит наше горизонтальное выравнивание.
Пока пункты занимают единственную строку, всё выглядит так.
Но, как только на поле появляется последняя строка, кол-во блоков в которой меньше, чем в предыдущих строках, то получается следующее.
Вроде бы тоже неплохо, всё происходит так, как и должно происходить. Последняя строка так же, как и предыдущие — выравнивается по середине. Но, именно это выравнивание и создаёт нам проблему. Блоки находятся по середине, создавая по бокам много ненужного и пустого пространства. Если бы, например, в последней строке остался всего один блок, то этого бы пространства стало ещё больше, а сам блок болтался бы в середине, как изгой на пустыре.
А теперь, давайте взглянем, чтобы мы хотели получить.
Как видно из рисунка, два элемента в последней строке прижались к левому краю, не смотря на то, что строка по ширине явно больше, чем общая ширина её блоков. Это видно по правому, свободному пространству, которое составляет две трети наших элементов. Именно такое поведение блоков нам и нужно получить в итоге. Т.е. по сути сделать так, чтобы выравнивание элементов было красивым, строящимся ровно по сетке (даже по резиновой), не взирая на своё количество и лишнее пустое пространство в последней строке. Говоря другими словами, нам нужно каким либо образом повлиять на поведение последней строки, заставив её подчиняться нашим правилам.
Как это работает?
Перед тем, как перейти непосредственно к решению задачи, давайте для начала разберём алготитм работы таких свойств, как text-align: center и justify. Это поможет нам лучше понять, что происходит в нашей сетке, её поведение, и то, как выполняется работа этих свойств в последней строке.
text-align: center
Начнём пожалуй с text-align: center. В нем можно выделить три основных этапа.
Первый этап
В начале берётся строка. Высчитывается общая ширина слов или неразрывных блоков (inline-block, img, и т.д) в строке. Причём если между этими блоками есть фактические пробелы или же отступы, которые сделаны с помощью таких средств, как word-spacing и прочих, то эти расстояния так же добавляются к общей сумме ширины блоков.
Второй этап
На этом этапе всё ещё проще. Вычисляется оставшееся ширина строки, т.е. всё свободное пространство, которое не вошло в сумму общей ширины слов с их межсловным расстоянием.
Третий этап
Ну и в завершающем этапе происходит следующее. Самая первая в строке площадка с буквой сдвигается вправо ровно на половину результата, полученного после этапа номер два. Что даёт абсолютно равные отступы справа и слева самой строки.
Чтобы лучше понять, как всё происходит, я сделал специальный рисунок.
Перед нами рисунок, на котором изображён контейнер, с двумя строками, ширина которых составляет 500px.
Так же мы можем видеть, что сумма всех блоков в первой строке с их интервалами равна 370px. Значит на третьем этапе наш алгоритм вычел из первого второе (500-370), что дало результат 130. Далее, как я уже говорил, поделил эту сумму ровно на два раза (130/2) и отодвинул самый первый блок вправо, на полученный результат (65px). Таким образом наши блоки оказались точно по середине, с отступы по бокам стали абсолютно одинаковыми. Если бы в первой строке не хватило места, то самый крайний справа блок перешёл бы на второю строку и алгоритм снова включился бы в дело.
Тоже самое касается и второй строки. В ней алгоритм работает точно так же, мало того, можно увидеть, что боковые отступы в ней составляют дробное число (132.5px), так как text-align: center делит общую ширину блоков с их интервалами ровно на 2, как я и говорил.
В принципе ничего сложного, всё вполне понятно и логично. В нашей ситуации важно понять, что, если в последней строке остаётся один блок, то он выравнивается ровно по середине, за счёт высчитанного, свободного пространства справа. А это как раз то, что нам и нельзя допускать.
text-align: justify
Механизм text-align: justify, я уже описывал в одной из своих статей. Повторяться не имеет смысла, поэтому я вам, настоятельно рекомендую пройти по ссылке и внимательно перечитать там всё, что касается алгоритма и этапов работы text-align: justify.
Единственное, что я хочу упомянуть здесь, это то, что…
Последняя же строка не попадает в поле зрения justify, так как он работает только для целиком заполненных строк, а в последней строке пробелы всегда остаются своего обычного размера.
Да, именно так. text-align: justify в отличии от text-align: center вообще отказывается работать с последней строкой, и поэтому выравнивания по ширине в ней не происходит.
Так что это тоже входит в наши обязанности, а именно заставить неработающий алгоритм действовать, и в завершающей строчке.
Решение
Сразу забегу вперёд и скажу, что решение для обоих случаев абсолютно идентично, поэтому нет смысла разбирать каждое из них в отдельности. Так что давайте поразмыслим, что у нас есть на данный момент.
Значит, по сути, у нас есть два свойства text-align: justify и center, каждый из которых выравнивает строки по собственному алгоритму. А так же мы уже понимаем, что text-align: center работает с последней строкой, а вот text-align: justify — нет. Но зато мы точно знаем, что если строка, за которой идёт следующая (допустим последняя) будет полностью заполнена, то эти свойства будут выравнивать нашу сетку по нашим правилам. И даже при резиновой ширине контейнера такие заполненные строки будут вести себя так, как нам хотелось бы.
Какой же вывод можно из этого сделать? И как можно связать эти вещи с последней строкой, в которой может быть всего один блок? Ответ прост. Нам нужно придумать, как можно заполнить последнюю строку так, чтобы, оставшееся от общей ширины блоков пространство, было чем-то заполнено, и мало того, чтобы это «чем-то» могло переходить на следующую строку, для того, чтобы наши свойства работали безукоризненно.
Итак, для заполнения последней строки, мы будем использовать псевдоэлемент, сгенерированный при помощи :after. Это хороший вариант, так как он поможет решить нам нашу задачу и избавит от лишнего мусора в разметке. По умолчанию псевдоэлементы генерируют строчный блок, а значит именно то, что нам и нужно. Так как inline-block будет представлять из себя одну большую, неразрывную букву и не сможет разбиться на несколько «кирпичей», что не приведёт ни к чему путному. Ну, а block сразу же займёт отдельную строку, и так же, как и inline-block — не принесёт результатов. При этих значениях наша ситуация будет выглядеть примерно так.
ul:after { content: 'display: block, мало контента'; display: block; background: #E76D13; }
Как видно, из скриншота, вспомогательный блок сразу же занял новую строку, оставив прежнюю (последнюю по факту) подчиняться правилам алгоритма. Каких-то положительных результатов такими средствами добиться невозможно, как бы вы не пытались, так что отбрасываем эти вещи и переходим к настоящему решению…
Из всего вышесказанного можно понять одно, что в нашей ситуации нам может помочь элемент, именно строчного (inline) уровня, т.е. обычный display : inline + строка текста, с пробелами между слов.
ul:after { content: 'Обычный строковый элемент, обычный строковый элемент, обычный строковый элемент'; background: #E76D13; }
Да, очень похоже. Из скриншота ясно, строчный блок, мало того, что смог повлиять на последнюю строку, так ещё и перенёсся на следующую не полностью, оставив на предыдущей строчке неразрывное слово. По этому слову видно, что по своей ширине оно немного не дотягивает до ширины блоков (100px), а если бы дотягивало, то, возможно, у нас и вышло бы что-то путное.
В общем поэкспериментировав какое-то время с вышесказаннным, на свет родилось следующее решение.
ul { font: 14px Verdana, Geneva, sans-serif; text-align: center; margin: 0px 0 10px; } ul:after { content: ' i i i i i i i i '; word-spacing: 97px; padding-left: 97px; /* visibility: hidden; Скрыл это свойство, ради демонстрации процесса*/ } ul li { display : inline-block; width : 100px; height: 100px; margin: 0px 0 20px; background: #E76D13; vertical-align: top; text-align: center; /* эмуляция inline-block для IE6-7*/ //display : inline; //zoom : 1; }
Здорово! Наша сетка выровнена так, как нам надо. Сразу же скажу, что такое выравнивание получается при любой ширине экрана, что не может не радовать. А теперь сама суть.
Значит у нас есть строка «i i i i i i i i» , состоящая из букв и пробелов, но это не простые буковки и пробелы, как может показаться на первый взгляд. Во-первых сама буква i выбрана не случайно. Дело в том, что буква i сама по себе узкая, за счёт чего ей легко управлять и подгонять нужную ширину. Во-вторых сами пробелы состоят не только из символа пробела, но и из word-spacing, т.е. его значение плюсуется к пробелу, что в сумме даёт нужную нам ширину. Да, и конечно же, нужно учитывать, что связка «пробел + word-spacing» работает только тогда, когда в конце неё идёт другой символ, отличный от пробельного. Так как пробелы имеют свойство «схлопывания», то буквы i, идущие после word-spacing не дают им этого сделать.
Так что, по сути, мы имеем неразрывные псевдоблоки, в виде «буквы + padding-left» вначале псевдоэлемента, а далее в виде связки «пробел + word-spacing + буква», и так до конца строки. Ну, а на следующей строчке всё повторяется заново, только первый псевдоблок состоит теперь из одной буквы. Но эта строка нас уже не волнует, нас интересуют только те «добавочные блоки», которые дополняют последнюю строку с нормальными блоками в сетке.
Кстати, букв должно хватить, чтобы гарантировано заполнить последнюю строку до конца в худшем случае. Т.е. их число должно быть равно максимальному кол-ву блоков в строке.
Да, и, конечно же, с text-align: justify этот метод работает точно так же.
Но это были плюсы, а как же минусы? Минусы у этого варианта таковы:
Во-первых, в нестабильной работе в Opera, блоки в которой, временами имеют нечёткое выравнивание по сетке. Причём это касается только последней и предпоследней строк. Не понятно, из-за чего это происходит, к сожалению мне так и не удалось это выяснить. Возможно проблема кроется в том, что крайняя буква прилипает к блоку, не чувствуя между ними пробела. В любом случае, очень надеюсь на то, что в комментах кто нибудь сможет дать пояснение этой загвоздки. Но, в целом, это не выглядит безобразно, т.е. работает, но просто немного нестабильно.
Во-вторых, из-за создания дополнительных элементов снизу образовывается неприятный отступ, который происходит за счёт его размера шрифта и межстрочного интервала. Лекарство в виде обнуления шрифта + межстрочного интервала у родителя и восстановлением их в нормальное состояние у потомков — не приносит результата, так как нужная нам строка в псевдоэлементе становится невидимая, и наша сетка перестаёт её чувствовать и поддаваться дрессировке.
Но есть всё же «почти» выход из ситуации, это нижний отрицательный margin, который может подтянуть часть своего «хвоста», позволяя следующим за ним элементам налезать на него. Подробнее об этом можно почитать тут. Я сказал «почти», потому что этот способ выручает отчасти, я бы сказал, на половину, может чуть больше. Так как в момент создания, уже двух-строчного хвоста, из букв, подтянуть обе строки, уже не представляется возможности.
Во-третьих, чтобы заставить этот метод работать в IE6-7, нам потребуется заменить наш псевдоэлемент дополнительным блоком-помощником, который будет вставлен в конце списка. Плюс к этому придётся воспользоваться такими средствами, как text-justify, text-align-last (их поведение я уже описывал в этой статье), восстановлением свойства zoom в начальное состояние, у дополнительного блока и прочими «радостями», благодаря которым, в этих браузерах наш способ будет работать так же. В конце статьи я обязательно приведу разные варианты этой задачи, чтобы вы могли выбрать нужный.
Резюме
В этой статье мы доказали, что блочная сетка не такая уж и неподвластная. Как оказалось, это вполне управляемая конструкция. Мало того, красивое выравнивание блоков в сетке можно достичь совершенно обычным и не трудным способом, а результат позволяет нам легко использовать его плоды в любых проектах. Что я и делаю, когда предоставляется такая возможность.
Да, и конечно же, хочется выразить огромную благодарность Илье Стрельцыну (@SelenIT2) за его идеи и невероятную помощь в материалах. Без него бы этой статьи не было.
Все решения воедино
Обновление от 30.03.2017: Современное решение этой задачи на Grid Layout (без хаков и лишнего кода)
P.S. Это тоже может быть интересно:
HTML5 | Выравнивание элементов. justify-content
Выравнивание элементов. justify-content
Последнее обновление: 18.04.2017
Иногда мы можем сталкиваться с тем, что пространство flex-контейнеров по размеру отличается от пространства, необходимого для flex-элементов. Например:
flex-элементы не используют все пространство flex-контейнера
flex-элементам требуется большее пространство, чем доступно во flex-контейнере. В этом случае элементы выходят за пределы контейнера.
Для управления этими ситуациями мы можем применять свойство justify-content. Оно выравнивает элементы вдоль основной оси — main axis
(при расположении в виде строки по горизонтали, при расположении в виде столбца — по вертикали) и принимает следующие значения:
flex-start: значение по умолчанию, при котором первый элемент выравнивается по левому краю контейнера(при расположении в виде строки) или по верху (при расположении в виде столбца), за ним располагается второй элемент и так далее.
flex-end: последний элемент выравнивается по правому краю (при расположении в виде строки) или по низу (при расположении в виде столбца) контейнера, за ним выравнивается предпоследний элемент и так далее
center: элементы выравниваются по центру
space-between: если в стоке только один элемент или элементы выходят за границы flex-контейнера, то данное значение аналогично
flex-start
. В остальных случаях первый элемент выравнивается по левому краю (при расположении в виде строки) или по верху (при расположении в виде столбца), а
последний элемент — по правому краю контейнера (при расположении в виде строки) или по низу (при расположении в виде столбца). Все оставшееся пространство
между ними равным образом распределяется между остальными элементамиspace-around: если в строке только один элемент или элементы выходят за пределы контейнера, то его действие аналогично значению
center
. В ином случае элементы равным образом распределяют пространство между левым и правым краем контейнера, а расстояние между первым и последним элементом
и границами контейнера составляет половину расстояния между элементами.
Выравнивание для расположения элементов в виде строки:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Flexbox в CSS3</title> <style> .flex-container { display: flex; border:1px #ccc solid; } .flex-end{ justify-content: flex-end; } .center{ justify-content: center; } .space-between{ justify-content: space-between; } .space-around{ justify-content: space-around; } .flex-item { text-align:center; font-size: 1em; padding: 1.5em; color: white; } .color1 {background-color: #675BA7;} .color2 {background-color: #9BC850;} .color3 {background-color: #A62E5C;} .color4 {background-color: #2A9FBC;} .color5 {background-color: #F15B2A;} </style> </head> <body> <h4>Flex-end</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Center</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Space-between</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> <h4>Space-around</h4> <div> <div>Flex Item 1</div> <div>Flex Item 2</div> <div>Flex Item 3</div> <div>Flex Item 4</div> </div> </body> </html>
Выравнивание при расположении в виде столбцов:
Свойства CSS для оформления текста HTML (vertical-align, text-align, text-indent и другие) : WEBCodius
Здравствуйте, уважаемые читатели блога webcodius.ru. В этой статье мы продолжаем изучать основы стилевой разметки CSS и рассмотрим свойства vertical-align, text-align, text-indent и некоторые другие, предназначенные для оформления текста html.
В прошлой статье мы рассмотрели свойства font-family, font-size, color и другие атрибуты CSS, которые позволяют задавать параметры шрифтов. Если вы впервые слышите о CSS, то обязательно прочтите статью о назначении каскадных таблиц стилей.
Выравнивание текста с помощью CSS
Начнем с атрибутов стиля, управляющих выводом текста в блочных элементах. Начнем со свойства text-align, которое является фактически заменой атрибута align (используется для выравнивания содержимого html-элементов, например абзацев p).
Свойство стиля text-align задает горизонтальное выравнивание текста и имеет всего четыре возможных значения:
Доступные значения этого правила определяют выравнивание, соответственно: left — по левому краю, right — по правому краю, center — по центру и justify — по ширине страницы (одновременно по левому и правому краю за счет увеличения расстояния между словами). Для примера, текст этой статьи выравнен по ширине страницы (если вы заметили у него ровные границы и слева и справа) с помощью правила text-align:justify.
По умолчанию, горизонтальное выравнивание выполняется по левому краю, поэтому специально указывать text-align:left не обязательно, если в родительских элементах не было указано другого выравнивания.
Примеры использования свойства:
Следующее свойство CSS text-ident задает отступ для красной строки, например для текста в теге абзаца p. Это правило также, как и text-align, применимо только для блочных элементов. Синтаксис:
Здесь допускаются абсолютные и относительные величины отступа. Абсолютные значения (px — пикселы, em, ex и др.) можно указывать как со знаком плюс, так и со знаком минус. Относительная величина обычно задается в процентах (%). Относительное значение рассчитывается от ширины области, которая отведена под текст. Так, css правило text-indent:50% задаст красную строку равную половине длины этой самой строки. По умолчанию отступ «красной строки» равен нулю. Пример:
Далее рассмотрим вертикальное выравнивание — свойство vertical-align. Это свойство применимо уже для всех html элементов и практически для всех означает выравнивание между собой строчных элементов с текстом относительно их базовой линии. Кроме тегов таблицы td и th, в которых по вертикали будет выравниваться весь контент. Синтаксис:
Рассмотрим каждое значение подробнее:
- baseline — выравнивание фрагмента текста по базовой линии родительского элемента. Это значение по умолчанию;
- sub — фрагмент текста изображается в виде нижнего индекса или подстрочным для родительского элемента;
- super — фрагмент текста изображается в виде верхнего индекса или надстрочным для родительского элемента;
- top — выравнивание фрагмента текста по верхнему краю родительского элемента;
- text-top — выравнивание фрагмента по верхнему краю текста родительского элемента;
- middle — выравнивание центра фрагмента текста по центру родительского элемента;
- bottom — выравнивание фрагмента текста по нижнему краю родительского элемента;
- text-bottom — выравнивание фрагмента по нижнему краю текста родительского элемента;
На рисунке ниже можно посмотреть поведение фрагментов теста при различных значениях свойства vertical-align в браузере Internet Explorer 11:
Кроме вышеперечисленных значений, можно указывать числовые значения. Так, правило CSS vertical-align:0 будет означать тоже самое, что и запись vertical-align:baseline. А правило vertical-align:10px будет смещать текст вверх на 10 пикселей относительно базовой линии. Для смещения текста вниз значение необходимо указывать с минусом.
Сдвиг также можно задавать в относительных единицах измерения, например в em и в ex или в процентах.
Для вертикального выравнивания содержимого ячеек таблицы в vertical-align следует использовать значения:
- top — для выравнивания содержимого по верхней границе ячейки;
- bottom — для выравнивания содержимого по нижней границе ячейки;
- middle — для выравнивания по центру ячейки (используется по умолчанию).
Для достижения нужного результата, обычно приходится экспериментировать с различными значениями свойства стиля vertical-align. Многочисленные возможные значения дают слишком разный результат в различных случаях.
Параметры white-space и word-wrap, управляющие разрывом строк
На очереди параметр white-space, который отвечает за отображение пробельных символов на html странице.
Как мы знаем, по умолчанию браузер объединяет все подряд идущие пробельные символы: пробелы, переносы строк и символы табуляции, — в один пробел. Исключение тег «pre», помещенный в него текст отображается как есть, со всеми пробелами.
Свойство white-space имеет следующий синтаксис:
Понятно, что значение normal используется по умолчанию и оставляет все как описывалось выше, все подряд идущие пробелы объединяются в один и перенос строк устанавливается автоматически.
Использование значения «pre», будет полной аналогией при применении тега «pre». Браузер будет отображать страницу с учетом всех лишних пробелов и переносов, как они были добавлены разработчиком. Если строка текста получиться слишком длинной, то будет добавлена горизонтальная полоса прокрутки.
Значение nowrap запрещает браузеру переносить строки и текст отображается одной строкой. Единственное, добавление тега «br» позволит перенести текст на новую строку.
Значение pre-wrap сохраняет все последовательности пробелов и переносов строк, но если строка не помещается в заданную область, то браузер автоматически переносит текст на новую строку.
Ну и значение pre-line преобразует пробелы в один пробел, переводы строк сохраняются и браузер может разорвать слишком длинные строки, чтобы избежать горизонтальной прокрутки.
Пример использования:
Далее рассмотрим параметр word-wrap, который поваляет указать переносить или нет длинные слова, которые не помещаются в заданную область. Это свойство применяется не часто, но иногда без него не обойтись:
word-wrap: normal|break-word
Значение normal указывает браузеру, что текст можно разрывать только по пробелам и это обычное поведение браузера. А значение break-word разрешает браузеру вставлять разрывы строк внутри слов. Пример:
Параметры тени у текста — свойство text-shadow
Для любителей различных украшательств в стандарте CSS3 появилась возможность задавать тень у текста. Грамотное использования свойства text-shadow позволяет заметно оживить web страницу. Синтаксис:
Значение none отменяет добавление тени у текста и установлено по умолчанию.
Цвет тени задается в любом доступном CSS формате и является не обязательным параметром. По умолчанию цвет тени совпадает с цветом текста.
Горизонтальное смещение тени можно задавать в любой единице измерения поддерживаемой CSS. При положительном значении тень будет располагаться правее текста, при отрицательном — левее. Нулевое значение расположит тень прямо под текстом и имеет смысл только если задано размытие тени.
Вертикальное смещение тени тоже можно задавать в любой единице измерения поддерживаемой CSS. При положительном значении тень будет смещаться ниже текста, при отрицательном — выше. Нулевое значение расположит тень прямо под текстом.
В любой единице измерения задается и радиус размытия тени. Чем больше это значение, тем шире становится тень и сильнее сглаживается. Если этот параметр не установлен, то значение размытие предполагается равным нулю. Так как алгоритм сглаживания обычно у разных браузеров отличается, то и вид тени может несколько отличаться в зависимости от браузера.
Рассмотрим пример:
И вот так будет выглядеть текст абзаца p с применением данного правила стиля в Internet Explorer 11:
На этом буду завершать статью. Чтобы узнать больше о свойствах CSS не забудьте подписаться на обновления блога и читайте статьи из раздела «Справочник CSS». До новых встреч!
CSS: свойство выравнивания текста
В этом руководстве по CSS объясняется, как использовать свойство CSS под названием text-align с синтаксисом и примерами.
Описание
Свойство CSS text-align определяет, как текст элемента выравнивается внутри его родительского блочного элемента.
Синтаксис
Синтаксис CSS-свойства text-align:
.
выравнивание текста: значение;
Параметры или аргументы
- значение
Выравнивание текста.Это может быть одно из следующих значений:
Значение Описание слева Текст с выравниванием по левому краю
div {text-align: left; }правый Текст с выравниванием по правому краю
div {text-align: right; }центр Текст по центру
div {text-align: center; }оправдать Текст выровнен по ширине (т.е. выровнять левый и правый края абзаца)
div {text-align: justify; }начало Если направление слева направо, текст будет выровнен по левому краю.
Если направление справа налево, текст будет выровнен по правому краю.
div {выравнивание текста: начало; }конец Если направление слева направо, текст будет выровнен по правому краю.
Если направление справа налево, текст будет выровнен по левому краю.
div {выравнивание текста: конец; }наследовать Элемент
унаследует выравнивание текста от своего родительского элемента
div {выравнивание текста: наследование; }
Примечание
- Свойство text-align выравнивает только встроенное содержимое (например, текст) элемента в пределах его родительского блочного элемента.
- Свойство text-align выравнивает не сам блочный элемент, а только встроенное содержимое.
Совместимость с браузером
Свойство CSS text-align имеет базовую поддержку в следующих браузерах:
- Хром
- Android
- Firefox (Gecko)
- Firefox Mobile (Gecko)
- Internet Explorer (IE)
- IE Телефон
- Opera
- Opera Mobile
- Safari (WebKit)
- Safari Mobile
Пример
Мы обсудим свойство text-align ниже, исследуя примеры использования этого свойства в CSS.
Использование центра
Давайте посмотрим на пример CSS с выравниванием текста, в котором мы центрируем текст.
div {выравнивание текста: центр; }
В этом примере CSS с выравниванием текста мы центрировали текст в теге
Использование выравнивания по левому краю
Теперь давайте рассмотрим пример CSS с выравниванием текста, в котором мы выравниваем текст по левому краю.
div {выравнивание текста: слева; }
В этом примере CSS с выравниванием текста мы выровняли текст в теге
Использование выравнивания по правому краю
Давайте посмотрим на пример CSS с выравниванием текста, в котором мы выравниваем текст по правому краю.
div {выравнивание текста: вправо; }
В этом примере CSS с выравниванием текста мы выровняли текст в теге
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
to 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 {
выравнивание текста: вправо;
}
Официальные спецификации
выравнивание текста · Документы WebPlatform
Сводка
Свойство CSS text-align описывает, как встроенный контент, такой как текст, выравнивается в элементе родительского блока.text-align не контролирует выравнивание самих блочных элементов, а только их встроенное содержимое.
Обзорная таблица
- Начальное значение
-
start, или безымянное значение, которое действует как left, если direction - ltr, right, если direction - rtl, если start не поддерживается браузером.
- Относится к
- блок-контейнеров
- Унаследовано
- Да
- Медиа
- визуальный
- Расчетное значение
- , как указано, за исключением значения родительского совпадения, которое вычисляется относительно значения направления его родительского элемента и приводит к вычисленному значению влево или вправо.
- Анимационный
- Нет
- Свойство объектной модели CSS
-
textAlign
Синтаксис
-
выравнивание текста: <строка>
-
выравнивание текста: по центру
-
выравнивание текста: конец
-
выравнивание текста: выравнивание
-
выравнивание текста: слева
-
выравнивание текста: соответствие-родитель
-
выравнивание текста: вправо
-
выравнивание текста: начало
-
выравнивание текста: начало конец
Значения
- начало
- То же, что
слева
, если направление слева направо исправа
, если направление справа налево. - конец
- То же, что
справа
, если направление слева направо ислева
, если направление справа налево. - слева
- Встроенное содержимое выравнивается по левому краю строчного поля.
- правый
- Встроенное содержимое выравнивается по правому краю строчного поля.
- центр
- Встроенное содержимое центрируется в рамке.
- <строка>
- Первое появление строки из одного символа — это элемент, используемый для выравнивания.ключевое слово, следующее за ним или предшествующее ему, указывает, как оно выровнено. Это позволяет, например, выровнять числовые значения по десятичной запятой.
- оправдать
- Текст выровнен по ширине. Текст должен выровнять свои левый и правый края с левым и правым краями абзаца.
- совпадающий родитель
- Аналогично наследованию с той разницей, что значение
начало
иконец
вычисляются в соответствии с направлением родителя и заменяются соответствующим значениемслева
илисправа
. - начало конец
- Задает
начало
выравнивание первой строки и любой строки сразу после принудительного разрыва строки; иend
выравнивание любых оставшихся строк, на которые не влияет text-align-last .
Примеры
Здесь показаны четыре возможных типа выравнивания текста.
Этот абзац выровнен по левому краю.
Этот абзац центрирован.
Этот абзац выровнен по правому краю.
Этот абзац должен быть очень длинным, чтобы показать, как выравнивать текст по ширине. Это работает только потому, что мы установили ширину для этого абзаца.
Посмотреть живой пример
.left {text-align: left;}
.cenetered {выравнивание текста: центр;}
.right {выравнивание текста: право;}
.justified {ширина: 200 пикселей; выравнивание текста: justify;}
Банкноты
Стандартный способ центрирования самого блока без центрирования его встроенного содержимого — это установка левого и правого поля
на авто, т.е.г .: наценка: авто; Маржа
или : 0 авто;
или левое поле: авто; маржа-право: авто;
Связанные спецификации
- Уровень текста CSS 3
- Осадка рабочий
См. Также
Другие статьи
Атрибуции
Сеть разработчиков Mozilla: статья
Сеть разработчиков Microsoft: статья
CSS | свойство text-align — GeeksforGeeks
<
html
>
<
head
>
<17
заголовок > свойство выравнивания текста title
>
<
style
>
h2 {
цвет: зеленый;
}
h2, h3, h4 {
выравнивание текста: по центру;
}
.основная {
граница: сплошная черная 1 пиксель;
}
.gfg1 {
выравнивание текста: по левому краю;
}
.gfg2 {
выравнивание текста: по правому краю;
}
.gfg3 {
выравнивание текста: по центру;
}
.gfg4 {
выравнивание текста: выравнивание по ширине;
}
стиль
>
головка
>
<
корпус
>
9 9000
<
h2
> GeeksforGeeks
h2
>
<
h3
> свойство выравнивания текста
h3
>
<
div
class
=
«main»
>
<
h4
> выравнивание текста: слева;
h4
>
<
div
класс
=
"gfg1"
>
90 003
Курс предназначен для студентов
, а также работающих специалистов
для подготовки к собеседованию по кодированию.Этот курс
будет включать вопросы по кодированию
от школьного уровня до необходимого уровня
для продуктовых компаний, таких как Amazon,
Microsoft, Adobe, и т. д.
div
>
div
> <
br
>
<
div
класс
=
«основной»
>
<
h4
> выравнивание текста: справа;
h4
>
<
div
класс
=
"gfg2"
>
Курс предназначен для студентов
, а также работающих специалистов
для подготовки к собеседованию по кодированию.Этот курс
будет включать вопросы по кодированию
от школьного уровня до необходимого уровня
для продуктовых компаний, таких как Amazon,
Microsoft, Adobe, и т. д.
div
>
div
> <
br
>
<
div
класс
=
«основной»
>
<
h4
> выравнивание текста: по центру;
h4
>
<
div
класс
=
"gfg3"
>
Курс предназначен для студентов
, а также работающих специалистов
для подготовки к собеседованию по кодированию.Этот курс
будет включать вопросы по кодированию
от школьного уровня до необходимого уровня
для продуктовых компаний, таких как Amazon,
Microsoft, Adobe, и т. д.
div
>
div
> <
br
>
<
div
класс
=
«основной»
>
<
h4
> выравнивание текста: выравнивание;
h4
>
<
div
класс
=
"gfg4"
>
Курс предназначен для студентов
, а также работающих специалистов
для подготовки к собеседованию по кодированию.Этот курс
будет включать вопросы по кодированию
от школьного уровня до необходимого уровня
для продуктовых компаний, таких как Amazon,
Microsoft, Adobe, и т. д.
div
>
div
>
корпус
>
html
>
CSS - выравнивание текста
CSS - выравнивание текста
выравнивание текста
выравнивание текста
выравнивает текст по левому, правому или по центру.
Вы также можете выровнять текст по ширине, но до появления переносов результат обычно был довольно некрасивым.
Традиционные ценности
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, а пес никак не отреагировал, потому что он был очень ленив.
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, в то время как пес никак не реагировал, потому что он был очень ленив.
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, в то время как пес никак не реагировал, потому что он был очень ленив.
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, в то время как пес никак не реагировал, потому что он был очень ленив.
Начало и конец
Значения start
и end
используют начало и конец направления текста.Это имеет значение, когда текст идет справа налево: в этом случае начало ,
означает правое, а конец ,
означает левое.
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, в то время как пес никак не реагировал, потому что он был очень ленив.
Быстрая, коричневая лиса, перепрыгнула через ленивого пса. О, как этот лис прыгнул, быстрый и коричневый, в то время как пес никак не реагировал, потому что он был очень ленив.
Справа налево
Вот пример текста с написанием справа налево.Все абзацы ниже имеют направление : rtl
. Я набрал обычный текст в обратном направлении.
слева
и справа
не должны быть затронуты; начало
и конец
должны быть поменяны местами.
выравнивание текста: слева
sah hpargarap sihT.
выравнивание текста: вправо
sah hpargarap sihT.
выравнивание текста: начало
sah hpargarap sihT.
выравнивание текста: конец
sah hpargarap sihT.
начало конец
start end
- это комплексное значение: первая строка текста и каждая первая строка после принудительного разрыва строки, например
, имеет
text-align: start
; любая другая строка имеет выравнивания текста: конец
. Не знаю, зачем вам это нужно.
Het onderafdelingshoofd Rijksluchtvaartdienstweerschepenpersoneel verontschuldigde zich voor de commissievergadering по de gereviseerde gelijkheidsbeginselencirculaire.
Dit geschiedde uit hoofde van zijn medeverantwoordelijkheid voor de functieomschrijvingswijzigingsproblematiek.
CSS свойство выравнивания текста - Tutorial Republic
Тема: Справочник по свойствам CSS3 Пред. | След.
Описание
Свойство text-align
CSS устанавливает горизонтальное выравнивание встроенного содержимого, такого как текст и изображения, в элементе родительского блока, таком как заголовок или абзац.
В следующей таблице приведены контекст использования и история версий этого свойства.
Значение по умолчанию: | влево , если направление - ' ltr ', вправо , если направление - ' rtl ' |
---|---|
Применимо к: | Элементы уровня блока, ячейки таблицы и встроенные блоки |
Унаследовано: | Есть |
Анимация: | № См. анимируемых свойств . |
Версия: | CSS 1, 2, 3 |
Синтаксис
Синтаксис свойства задается следующим образом:
В приведенном ниже примере показано свойство text-align
в действии.
h2 {
выравнивание текста: центр;
}
п {
выравнивание текста: выравнивание;
}
Стоимость недвижимости
В следующей таблице описаны значения этого свойства.
Значение | Описание |
---|---|
слева | Выравнивает встроенный текст по левому краю. |
правый | Выравнивает встроенный текст по правому краю. |
центр | Центрирует встроенный текст. |
оправдать | Текст выровнен. Текст выравнивает их левый и правый края к левому и правому краю содержимого абзаца, растягивая пробелы и слова. |
начальная | Устанавливает для этого свойства значение по умолчанию. |
наследовать | Если указано, связанный элемент принимает вычисленное значение свойства своего родительского элемента text-align . |
Совместимость с браузером
Свойство text-align
поддерживается во всех основных современных браузерах.
Базовая поддержка -
|
Дополнительная литература
См. Учебник по: Текст CSS, Выравнивание CSS.
Свойства, связанные с текстом: letter-spacing
, text-decoration
, text-indent
, text-overflow
, text-shadow
, text-transform
, white-space
, word -пространство
.
Скрытые возможности CSS Text Align
Я хотел бы пролить свет на вариант использования с выравниванием текста
, который некоторые из нас, включая меня, могут не использовать.
Уловка
Прежде чем раскрыть трюк, который я собираюсь обсудить в статье, я бы не стал дважды думать о том, как следует выровнять элемент. Я обычно использую следующие способы:
- Flexbox
- Маржа
авто
- Выбор позиции
В следующих примерах я рассмотрю некоторые варианты использования с выравниванием текста
, которые просты и эффективны.
Это мой любимый, и я часто им пользуюсь. Имея каждый тег как встроенный блок
элемент, легко получить преимущество text-align: center
на оболочке.
.tags-wrapper {
выравнивание текста: центр; / * Текст выравнивается для победы! * /
}
.ярлык {
дисплей: встроенный блок;
}
Предположим, что есть две обертки, каждая из которых занимает 50% своего родителя. Внутри каждого у нас есть
. Один справа выровнен по правому краю, а другой по левому краю.Как мы можем легко этого добиться?
По умолчанию
является встроенным элементом, на который может влиять свойство text-align
. Если мне нужно выровнять логотип по правому краю, я бы сделал вот что:
.item.start {
выравнивание текста: вправо;
}
.item.end {
выравнивание текста: слева;
}
Компонент карты
Аватаром пользователя может быть значок или что-то еще, за которым следует элемент с отображением : блок
.В данном случае за ним следует название карточки.
.card {
/ * Другие стили * /
выравнивание текста: центр;
}
.