Den inset
ejendom i CSS er en forkortelse for de fire indsatte egenskaber, top
, right
, bottom
og left
i en erklæring. Ligesom de fire individuelle egenskaber inset
har den ingen effekt på ikke-placerede (statiske) elementer. Med andre ord skal et element deklarere en eksplicit position
værdi, før de indsatte egenskaber kan træde i kraft.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
er oprindeligt defineret i CSS logiske egenskaber og værdier niveau 1 specifikation, som er i Editor's Draft fra 20. april 2020.
Syntaks
Som du måske har samlet fra eksemplet ovenfor, inset
følger den samme syntaks med flere værdier for padding
og margin
. Det betyder at det accepterer så mange som fire værdier (at erklære forskydninger til top
, right
, bottom
og left
), og så få som én værdi (at erklære en lige offset for alle fire egenskaber). Og ligesom padding
og margin
værdierne strømmer med uret, begyndende med 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 */ )
Før inset
skulle vi erklære hver inset
underejendom separat, sådan:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Nu kan vi simpelthen gøre det til en enkelt linje af CSS:
.box ( position: absolute; inset: 0; /* ? */ )
Værdier
Den inset
ejendom accepterer numeriske værdier ligesom toppen, højre og bund og venstre. Disse værdier kan være en hvilken som helst gyldigt CSS længde, såsom px
, em
, rem
og %
, blandt andre.
Lad os tale om logiske egenskaber
Vi skal bare skrabe overfladen af logiske egenskaber her, da det reelle fokus er på inset
og dets relaterede underegenskaber. Få et grundigt dybdyk om emnet i denne Smashing Magazine-artikel af Rachel Andrew.
Der er flere inset
sub-egenskaber end top
, right
, bottom
og left
men, for at forstå dem, at få det værd bekendt med logiske egenskaber og værdier.
Indholdet kan vises i forskellige retninger (dvs. skrivemetoder), inklusive venstre mod højre, højre mod venstre, top til bund og bund til top. Når vi taler om ”logiske” begreber, henviser vi virkelig til udgangspunktet baseret på indholdet af skriveretningen.
Forestil dig, at du bygger et websted, der skal understøtte både venstre mod højre (LTR) sprog, som engelsk og spansk, og højre til venstre (RTL) sprog, som persisk eller arabisk. Lad os sige, at du vil tilføje en margen mellem et ikon og en linjetekst ud for det.


Naturligvis kan du muligvis nå ud til margin-right
ejendommen for at understøtte LTR og derefter tilføje endnu et regelsæt, der fjerner margenen og erstatter den med margin-left
for RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Dette er en lille del af en side. Forestil dig nu at bygge et stort websted på denne måde - det er meget arbejde! Men logiske egenskaber gør det et øjeblik ved at tage skrivemåden i betragtning for os. For eksempel kan vi tilføje margen til slutningen af elementet, uanset hvor det sker:
.icon ( margin-inline-end: 1em; )
Dette er hvad vi mener, når vi henviser til logiske egenskaber - de er i forhold til skrivetilstanden snarere end en fysisk retning. Se hvordan logiske egenskaber er meget mere logiske at arbejde med?
Indsatte logiske egenskaber
Så ved at vide, hvad du nu ved om logiske egenskaber, er her fire yderligere indsatte underegenskaber:
Logisk ejendom | Vandret flowækvivalent | Hvad det gør |
---|---|---|
inset-block-start | top | Angiver forskydningen for startkanten i den retning, der er vinkelret på skriveretningen. |
inset-block-end | bottom | Specificerer forskydning for slutkant i den retning, der er vinkelret på skriveretningen. |
inset-inline-start | left | Angiver forskydningen for startkanten i skriveretningen, som kortlægges til en fysisk forskydning afhængigt af elementets skrivemåde, retning og tekstretning. |
inset-inline-end | right | Angiver forskydningen for slutkanten i skriveretningen. |
Vi kan endda gruppere disse fire underejendomme i to yderligere stenografiske egenskaber:
Logisk ejendom | Shorthand For | Hvad det gør |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Accepterer en enkelt værdi for at indstille både inset-inline-start og inset-inline-end .Accepterer også to værdier, hvor den første angiver inset-inline-start og den anden angiver inset-inline-end . |
inset-block | inset-block-start inset-block-end | Accepterer en enkelt værdi for at indstille både inset-block-star t og inset-block-end .Accepterer også to værdier, hvor den første angiver inset-block-start og den anden angiver inset-block-end . |
Demo
Skift skrivemåde og værdier for indsatte egenskaber for at få en bedre idé om, hvordan de fungerer:
Heads up: inset
Ejendommen er ikke logisk
Selvom det inset
er en del af specifikationen for logiske egenskaber og værdier, definerer det ikke logiske blok- eller inline-forskydninger. I stedet definerer den fysiske forskydninger uanset elementets skrivemåde, retning og tekstorientering. Med andre ord, inset
er bare forkortelse for top
, right
, bottom
og left
.
Der er en del diskussion her på GitHub angående brugen af nogle nøgleord for også at kunne bruge denne egenskab på en logisk måde.
Så bruger vi stadig fysiske forskydninger? Forestil dig, at du vil have et badge eller et logo fastgjort i øverste og venstre hjørne af din side, og uanset sprog skal du have det til at være der. I så fald kan du ikke bruge logiske forskydninger og bliver nødt til at ty til fysiske egenskaber i stedet.
Browsersupport
Support til inset
ejendommen er stadig i sin tidlige fase. I skrivende stund estimerer caniuse global støtte til kun 3,79%.
Desktop
Internet Explorer | Edge | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Ingen | Ingen | 66+ | Ingen | Ingen | Ingen |
Mobil
iOS Safari | Opera Mini | Android-browser | Chrome Android | Firefox Android |
---|---|---|---|---|
Ingen | Ingen | 68 | Ingen | Ingen |
Mere information
- CSS logiske egenskaber og værdier niveau 1 (specifikation, redaktørens kladde)
- Forståelse af logiske egenskaber og værdier (Smashing Magazine)
- CSS logiske egenskaber (CSS-tricks)