inset
Свойство в CSS является обобщающим для четырех вкладных свойств top
, right
, bottom
и left
в одной декларации. Как и сами четыре отдельных свойства, inset
не влияет на непозиционированные (статические) элементы. Другими словами, элемент должен объявить явное position
значение, прежде чем свойства вставки могут вступить в силу.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
изначально определен в спецификации CSS Logical Properties and Values Level 1, которая находится в черновике редактора от 20 апреля 2020 г.
Синтаксис
Как вы могли понять из приведенного выше примера, он inset
следует тому же многозначному синтаксису, что padding
и и margin
. Это означает , что она принимает целых четыре значения (объявлять смещения для top
, right
, bottom
и left
) , и всего лишь одно значения (объявлять равноправное смещение для всех четырех свойств). И, как padding
и margin
, значения текут по часовой стрелке, начиная с top
.
.element ( inset: 1em 2em 3em 0; /* top right bottom left */ inset: 10% 5% -10%; /* top left/right bottom */ inset: 0 10px; /* top/bottom left/right */ inset: 20px; /* all edges = 20px */ )
Раньше inset
нам приходилось объявлять каждое inset
подсвойство отдельно, например:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Теперь мы можем просто сделать это одной строкой CSS:
.box ( position: absolute; inset: 0; /* ? */ )
Значения
inset
Свойство принимает числовые значения , так же , как сверху, справа, снизу и слева. Эти значения могут быть любой допустимой длиной CSS, такие как px
, em
, rem
и %
, среди прочих.
Поговорим о логических свойствах
Здесь мы просто коснемся поверхности логических свойств, поскольку основное внимание уделяется inset
и связанным с ними подсвойствам. Подробно рассмотрите эту тему в статье Рэйчел Эндрю в Smashing Magazine.
Есть еще inset
суб-свойства , чем top
, right
, bottom
и , left
но для того, чтобы понять их, это стоит того , чтобы познакомиться с логическими свойствами и значениями.
Контент может отображаться в разных направлениях (то есть в режимах письма), в том числе слева направо, справа налево, сверху вниз и снизу вверх. Когда мы говорим о «логических» концепциях, мы действительно имеем в виду отправную точку, основанную на направлении написания контента.
Представьте, что вы создаете веб-сайт, который должен поддерживать языки с письмом слева направо (LTR), такие как английский и испанский, и языки с письмом справа налево (RTL), например персидский или арабский. Допустим, вы хотите добавить поле между значком и строкой текста рядом с ним.
Естественно, вы можете обратиться к margin-right
свойству для поддержки LTR, а затем добавить еще один набор правил, который удаляет это поле и заменяет его margin-left
на RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Это небольшая часть страницы. А теперь представьте, что вы создаете таким образом большой веб-сайт - это большая работа! Но логические свойства делают это несложно, учитывая для нас режим записи. Например, мы можем добавить маржу в конец элемента, где бы он ни находился:
.icon ( margin-inline-end: 1em; )
Это то, что мы имеем в виду, когда говорим о логических свойствах - они относятся к режиму записи, а не к физическому направлению. Видите, насколько логичнее работать с логическими свойствами?
Вставить логические свойства
Итак, зная, что вы теперь знаете о логических свойствах, вот четыре дополнительных вложенных подсвойства:
Логическое свойство | Эквивалент горизонтального потока | Что оно делает |
---|---|---|
inset-block-start | top | Задает смещение для начальной кромки в направлении, перпендикулярном направлению записи. |
inset-block-end | bottom | Задает смещение конечной кромки в направлении, перпендикулярном направлению записи. |
inset-inline-start | left | Задает смещение для начального края в направлении письма, которое сопоставляется с физическим смещением в зависимости от режима письма, направления и ориентации текста элемента. |
inset-inline-end | right | Задает смещение конечной кромки в направлении письма. |
Мы даже можем сгруппировать эти четыре подсвойства в два дополнительных сокращенных свойства:
Логическое свойство | Сокращение для | Что оно делает |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Принимает одно значение для установки обоих inset-inline-start и inset-inline-end .Также принимает два значения, где первое указывает, inset-inline-start а второе указывает inset-inline-end . |
inset-block | inset-block-start inset-block-end | Принимает одно значение для установки как inset-block-star t, так и inset-block-end .Также принимает два значения, где первое указывает, inset-block-start а второе указывает inset-block-end . |
Демо
Измените режим записи и значения свойств вставки, чтобы лучше понять, как они работают:
Внимание: inset
собственность не логична
Хотя inset
это часть спецификации логических свойств и значений, она не определяет логические блоки или встроенные смещения. Вместо этого он определяет физические смещения, независимо от режима письма, направления и ориентации текста элемента. Другими словами, inset
это просто сокращение для top
, right
, bottom
и left
.
Здесь, на GitHub, обсуждается использование некоторых ключевых слов, чтобы иметь возможность использовать это свойство логическим образом.
Итак, мы все еще используем физические смещения? Представьте, что вы хотите, чтобы значок или логотип был прикреплен к верхнему и левому углу страницы, и, независимо от языка, вы хотите, чтобы он был там. В этом случае вы не можете использовать логические смещения и вместо этого придется прибегать к физическим свойствам.
Поддержка браузера
Поддержка inset
собственности все еще находится на начальной стадии. На момент написания этой статьи caniuse оценивает глобальную поддержку всего в 3,79%.
Рабочий стол
Internet Explorer | Край | Fire Fox | Хром | Сафари | Опера |
---|---|---|---|---|---|
Нет | Нет | 66+ | Нет | Нет | Нет |
Мобильный
iOS Safari | опера мини | Браузер Android | Chrome Android | Firefox Android |
---|---|---|---|---|
Нет | Нет | 68 | Нет | Нет |
Дополнительная информация
- Логические свойства и значения CSS, уровень 1 (спецификация, черновик редактора)
- Понимание логических свойств и значений (Smashing Magazine)
- Логические свойства CSS (CSS-приемы)