inset
Властивість в CSS є узагальнюючим для чотирьох вкладних властивостей top
, right
, bottom
і left
в одній декларації. Так само, як і чотири окремі властивості, inset
не впливає на непозиціоновані (статичні) елементи. Іншими словами, елемент повинен оголосити явне position
значення, перш ніж властивості вставки можуть набути чинності.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
спочатку визначається в специфікації логічних властивостей та значень CSS рівня 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 | Край | Firefox | Chrome | Сафарі | Опера |
---|---|---|---|---|---|
Ні | Ні | 66+ | Ні | Ні | Ні |
Мобільний
iOS Safari | Opera Mini | Браузер Android | Chrome Android | Firefox Android |
---|---|---|---|---|
Ні | Ні | 68 | Ні | Ні |
Більше інформації
- Логічні властивості та значення CSS Рівень 1 (специфікація, проект редактора)
- Розуміння логічних властивостей і цінностей (Smashing Magazine)
- Логічні властивості CSS (CSS-хитрощі)