Логические свойства для плавания и позиционирования
Модуль CSS логические свойства и значения содержит логические сопоставления для физических значений свойств float и clear, а также для свойств позиционирования, используемых с позиционированным макетом. Это руководство демонстрирует, как использовать эти свойства.
Сопоставленные свойства и значения
В таблице ниже подробно описаны логические свойства и значения, обсуждаемые в этом руководстве, а также их сопоставления с физическими свойствами и значениями. Они предполагают горизонтальную writing-mode с направлением слева направо.
| Логическое свойство или значение | Физическое свойство или значение |
|---|---|
float: начало строки |
float: слева |
float: конец строки |
float: справа |
clear: начало строки |
clear: слева |
clear: конец строки |
clear: справа |
inset-inline-start | left |
inset-inline-end | right |
inset-block-start | top |
inset-block-end | bottom |
text-align: начало |
text-align: слева |
text-align: конец |
text-align: справа |
Помимо этих сопоставленных свойств, существуют дополнительные сокращённые свойства, которые стали возможны благодаря возможности обращения к блочным и строчным измерениям. У них нет сопоставления с физическими свойствами, кроме свойства inset.
| Логическое свойство | Назначение |
|---|---|
inset-inline | Устанавливает оба значения вставки для строчного измерения одновременно. |
inset-block | Устанавливает оба значения вставки для блочного измерения одновременно. |
inset | Устанавливает все четыре значения вставки одновременно с физическим сопоставлением многозначных значений. |
Пример плавания и очистки
Физические значения, используемые со свойствами float и clear, это left, right и both. Модуль CSS логических свойств и значений определяет значения inline-start и inline-end как сопоставления для left и right.
На примере ниже первый блок смещён с помощью float: left, а второй — с помощью float: inline-start. Если вы примените direction: rtl к селектору .inner, то слева-смещённый блок всегда будет слева, а блок, смещённый по inline-start, будет следовать за direction текста. Вы можете объединить это с writing-mode: vertical-rl чтобы увидеть разницу в макете блоков в сочетании со значениями direction.
<div class="container">
<div class="inner">
<div class="physical box"></div>
Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce
kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter
purslane kale.
</div>
<div class="inner">
<div class="logical box"></div>
Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce
kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter
purslane kale.
</div>
</div>
.inner {
/* direction: rtl; */
/* writing-mode: vertical-rl; */
}
.physical {
float: left;
}
.logical {
float: inline-start;
}
Пример: Свойства вставки для позиционированного макета
CSS позиционирование, как правило, позволяет позиционировать элемент относительно его содержащего блока — мы фактически вставляем элемент относительно того места, где он должен находиться в соответствии с обычным потоком. Чтобы позиционировать элемент относительно области просмотра, используйте физические свойства top, right, bottom и left. Если вам нужно, чтобы позиционирование относилось к потоку текста в вашем режиме написания, используйте inset-block-start, inset-block-end, inset-inline-start и inset-inline-end вместо них.
Эти свойства принимают длину или процент в качестве значения и относятся к размерам экрана пользователя.
В примере ниже свойства inset-block-start и inset-inline-end используются для позиционирования синего блока с помощью абсолютного позиционирования внутри области с пунктирной серой границей, которая имеет position: relative. Измените свойство writing-mode на vertical-rl, или добавьте direction: rtl, и вы увидите, как позиционируемый относительно потока блок останется вместе с направлением текста.
<div class="container">
<div class="inner">
<div class="physical box"></div>
</div>
<div class="inner">
<div class="logical box"></div>
</div>
</div>
.inner {
writing-mode: horizontal-tb;
}
.physical {
position: absolute;
top: 20px;
right: 0;
}
.logical {
position: absolute;
inset-block-start: 20px;
inset-inline-end: 0;
}
Новые сокращённые записи на два и четыре значения
Как и в других свойствах модуля, у нас есть сокращённые свойства, которые позволяют устанавливать два или четыре значения сразу.
-
inset— устанавливает все четыре стороны вместе с физическим сопоставлением. -
inset-inline— устанавливает обе логические строчные вставки. -
inset-block— устанавливает обе логические блочные вставки.
Пример: Логические значения для text-align
Свойство text-align имеет логические значения, которые соотносятся с направлением текста — вместо использования left и right вы можете использовать start и end. В примере ниже text-align: right установлено в первом блоке, а text-align: end — во втором.
Если вы измените значение direction на rtl, вы увидите, что выравнивание по-прежнему справа для первого блока, но переходит к логическому концу слева во втором.
<div class="container"> <div class="inner physical">Aligned text</div> <div class="inner logical">Aligned text</div> </div>
.inner {
direction: ltr;
}
.physical {
text-align: right;
}
.logical {
text-align: end;
}
Это работает более последовательно при использовании выравнивания блоков, которое использует начало и конец, а не физические направления для выравнивания.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values/Floating_and_positioning