inset
CSS nuosavybė yra sutrumpinimas iš keturių vidiniais savybių, top
, right
, bottom
ir left
vienoje deklaracijoje. Kaip ir pačios keturios atskiros savybės, inset
neturi įtakos nejudantiems (statiniams) elementams. Kitaip tariant, elementas turi deklaruoti aiškią position
vertę, kad įsigaliotų įterptinės savybės.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
iš pradžių apibrėžta CSS loginių ypatybių ir vertybių 1 lygio specifikacijoje, kuri yra redaktoriaus juodraštyje nuo 2020 m. balandžio 20 d.
Sintaksė
Kaip jau supratote iš aukščiau pateikto pavyzdžio, inset
vadovaukitės ta pačia daugiavertine sintakse padding
ir margin
. Tai reiškia, kad ji pripažįsta tiek, kiek keturių verčių (deklaruoti kompensacijas už top
, right
, bottom
ir left
) ir vos viena reikšme (deklaruoti lygiomis kompensuoti visų keturių savybių). Ir, kaip padding
ir margin
, vertės teka pagal laikrodžio rodyklę, pradedant nuo 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 */ )
Anksčiau inset
turėjome deklaruoti kiekvieną inset
sub-nuosavybę atskirai, taip:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Dabar galime tiesiog tai padaryti vienoje CSS eilutėje:
.box ( position: absolute; inset: 0; /* ? */ )
Vertybės
inset
Nuosavybė priima skaitines vertes kaip viršuje, dešinėje, apačioje ir kairėje. Šios vertybės gali būti bet koks CSS ilgis, pavyzdžiui px
, em
, rem
ir %
, be kita ko.
Pakalbėkime apie logines savybes
Čia mes tiesiog subraižysime loginių savybių paviršių, nes realus dėmesys skiriamas inset
ir su juo susijusios sub savybės. Išsamiai įsigilinkite į temą šiame Rachel Andrew žurnalo „Smashing Magazine“ straipsnyje.
Yra daugiau inset
sub-savybės kaip top
, right
, bottom
ir left
, bet tam, kad juos suprasti, tai verta susipažinti su loginių savybių ir vertybių.
Turinys gali būti rodomas skirtingomis kryptimis (ty rašymo režimais), įskaitant kairę į dešinę, iš dešinės į kairę, iš viršaus į apačią ir iš apačios į viršų. Kalbėdami apie „logiškas“ sąvokas, mes iš tikrųjų remiamės pradiniu tašku, atsižvelgdami į turinio rašymo kryptį.
Įsivaizduokite, kad kuriate svetainę, kurioje turi būti palaikomos kalbos iš kairės į dešinę (LTR), pvz., Anglų ir ispanų, ir iš dešinės į kairę (RTL), pvz., Persų ar arabų. Tarkime, kad norite pridėti paraštę tarp piktogramos ir eilutės teksto šalia jos.
Natūralu, kad galite pasiekti, kad margin-right
nuosavybė palaikytų LTR, tada pridėkite kitą taisyklių rinkinį, kuris pašalina tą maržą ir pakeičia margin-left
RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Tai maža puslapio dalis. Dabar įsivaizduokite, kad tokiu būdu sukursite didelę svetainę - tai daug darbo! Tačiau loginės savybės leidžia tai padaryti greitai, atsižvelgiant į rašymo režimą. Pvz., Elemento pabaigoje galime pridėti maržą, kad ir kaip būtų:
.icon ( margin-inline-end: 1em; )
Tai mes turime omenyje turėdami omenyje logines savybes - jos yra susijusios su rašymo režimu, o ne su fizine kryptimi. Pažiūrėkite, kaip logiškesnės savybės yra daug logiškesnės dirbti?
Loginių savybių įvedimas
Taigi, žinodami, ką dabar žinote apie logines savybes, pateikiamos keturios papildomos įterptinės sub-ypatybės:
Loginė nuosavybė | Horizontalaus srauto ekvivalentas | Ką tai daro |
---|---|---|
inset-block-start | top | Nurodo pradinio krašto poslinkį statmenai rašymo krypčiai. |
inset-block-end | bottom | Nurodo galinio krašto poslinkį statmenai rašymo krypčiai. |
inset-inline-start | left | Nurodo pradžios krašto poslinkį rašymo kryptimi, kuris priskiriamas fiziniam poslinkiui, atsižvelgiant į elemento rašymo režimą, kryptį ir teksto orientaciją. |
inset-inline-end | right | Nurodo pabaigos krašto poslinkį rašymo kryptimi. |
Mes netgi galime sugrupuoti tas keturias sub-ypatybes į dvi papildomas trumpinių savybes:
Loginė nuosavybė | Stenografija | Ką tai daro |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Priima vieną reikšmę, kad būtų galima nustatyti inset-inline-start ir inset-inline-end .Taip pat priima dvi reikšmes, kur pirmoji nurodo, inset-inline-start o antroji nurodo inset-inline-end . |
inset-block | inset-block-start inset-block-end | Priima vieną reikšmę, kad būtų galima nustatyti ir inset-block-star t, ir inset-block-end .Taip pat priima dvi reikšmes, kur pirmoji nurodo, inset-block-start o antroji nurodo inset-block-end . |
Demonstracija
Pakeiskite įterptųjų ypatybių rašymo režimą ir vertes, kad geriau suprastumėte, kaip jie veikia:
Aukštyn: inset
nuosavybė nėra logiška
Nors inset
tai yra „Logical Properties and Values“ specifikacijos dalis, ji neapibrėžia loginių blokų ar įterptųjų poslinkių. Vietoj to, jis apibrėžia fizinius poslinkius, neatsižvelgiant į elemento rašymo režimą, kryptį ir teksto orientaciją. Kitaip tariant, inset
yra tik sutrumpinimas top
, right
, bottom
ir left
.
Čia „GitHub“ yra tam tikra diskusija dėl kai kurių raktinių žodžių naudojimo, kad būtų galima logiškai naudoti šią nuosavybę.
Taigi, ar vis dar naudojame fizinius atskaitymus? Įsivaizduokite, kad norite ženklelio ar logotipo pritvirtinti viršutiniame ir kairiajame puslapio kampe ir, kad ir kokia būtų jo kalba, norite, kad jis būtų ten. Tokiu atveju negalite naudoti loginių poslinkių, o vietoj to turėsite pasitelkti fizines savybes.
Naršyklės palaikymas
Parama inset
turtui dar tik ankstyvoje stadijoje. Šiuo metu Caniuse mano, kad pasaulinė parama yra tik 3,79%.
Darbalaukis
Internet Explorer | Briauna | „Firefox“ | „Chrome“ | „Safari“ | Opera |
---|---|---|---|---|---|
Ne | Ne | 66+ | Ne | Ne | Ne |
Mobilusis
„iOS Safari“ | „Opera Mini“ | „Android“ naršyklė | „Chrome“ „Android“ | „Firefox Android“ |
---|---|---|---|---|
Ne | Ne | 68 | Ne | Ne |
Daugiau informacijos
- CSS loginių ypatybių ir reikšmių 1 lygis (specifikacija, redaktoriaus juodraštis)
- Loginių savybių ir vertybių supratimas (žurnalas „Smashing“)
- CSS loginės savybės (CSS-gudrybės)