Het inset
pand in CSS is een afkorting voor de vier inzet eigenschappen, top
, right
, bottom
en left
in een verklaring. inset
Heeft net als de vier individuele eigenschappen zelf geen effect op niet-gepositioneerde (statische) elementen. Met andere woorden, een element moet een expliciete position
waarde declareren voordat inset-eigenschappen van kracht kunnen worden.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
wordt aanvankelijk gedefinieerd in de CSS Logical Properties and Values Level 1-specificatie, die in Editor's Draft staat vanaf 20 april 2020.
Syntaxis
Zoals je misschien hebt opgemaakt uit het bovenstaande voorbeeld, inset
volgt dezelfde syntaxis met meerdere waarden van padding
en margin
. Dat betekent accepteert wel vier waarden (te verklaren offsets voor top
, right
, bottom
en left
) en zo weinig als één waarde (verklaren gelijke verschuiving voor alle vier eigenschappen). En, net als padding
en margin
, stromen de waarden met de klok mee, te beginnen met 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 */ )
Vroeger inset
moesten we elke inset
sub-eigenschap apart declareren , als volgt:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Nu kunnen we dat eenvoudig doen naar een enkele regel CSS:
.box ( position: absolute; inset: 0; /* ? */ )
Waarden
De inset
eigenschap accepteert numerieke waarden net als boven, rechts, onder en links. Die waarden kan elke geldige CSS lengte zijn, zoals px
, em
, rem
en %
, onder anderen.
Laten we het hebben over logische eigenschappen
We gaan hier gewoon de oppervlakte van logische eigenschappen bespreken, aangezien de echte focus ligt op inset
en de gerelateerde subeigenschappen. Krijg een grondige diepe duik over het onderwerp in dit Smashing Magazine-artikel van Rachel Andrew.
Er zijn meer inset
sub-eigenschappen dan top
, right
, bottom
en left
maar om ze te begrijpen, het is de moeite waard om kennis te maken met logische eigenschappen en waarden.
Inhoud kan in verschillende richtingen worden weergegeven (dwz schrijfmodi), inclusief van links naar rechts, van rechts naar links, van boven naar beneden en van beneden naar boven. Als we het hebben over 'logische' concepten, verwijzen we eigenlijk naar het startpunt op basis van de schrijfrichting van de inhoud.
Stel je voor dat je een website bouwt die zowel links-naar-rechts (LTR) talen moet ondersteunen, zoals Engels en Spaans, als rechts-naar-links (RTL) talen, zoals Perzisch of Arabisch. Stel dat u een marge wilt toevoegen tussen een pictogram en een regel tekst ernaast.
U kunt natuurlijk naar de margin-right
eigenschap grijpen om LTR te ondersteunen, en vervolgens een andere regelset toevoegen die die marge verwijdert en vervangt margin-left
door RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Dit is een klein deel van een pagina. Stel je nu voor dat je op deze manier een grote website bouwt - dat is veel werk! Maar logische eigenschappen maken het een fluitje van een cent door voor ons rekening te houden met de schrijfmodus. We kunnen bijvoorbeeld een marge toevoegen aan het einde van het element, waar dat ook is:
.icon ( margin-inline-end: 1em; )
Dit is wat we bedoelen als we verwijzen naar logische eigenschappen - ze zijn relatief ten opzichte van de schrijfmodus in plaats van een fysieke richting. Zie je hoe logische eigenschappen veel logischer zijn om mee te werken?
Leg logische eigenschappen in
Dus, wetende wat u nu weet over logische eigenschappen, zijn hier vier aanvullende sub-eigenschappen voor inset:
Logische eigenschap | Equivalent horizontale stroom | Wat het doet |
---|---|---|
inset-block-start | top | Specificeert de offset voor de beginrand in de richting die loodrecht staat op de schrijfrichting. |
inset-block-end | bottom | Specificeert de offset voor de eindrand in de richting die loodrecht staat op de schrijfrichting. |
inset-inline-start | left | Specificeert de offset voor de beginrand in de schrijfrichting, die wordt toegewezen aan een fysieke offset, afhankelijk van de schrijfmodus, richting en tekstoriëntatie van het element. |
inset-inline-end | right | Specificeert de offset voor de eindrand in de schrijfrichting. |
We kunnen die vier subeigenschappen zelfs groeperen in twee aanvullende steno-eigenschappen:
Logische eigenschap | Afkorting voor | Wat het doet |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Accepteert een enkele waarde om beide in te stellen inset-inline-start en inset-inline-end .Accepteert ook twee waarden, waarbij de eerste specificeert inset-inline-start en de tweede specificeert inset-inline-end . |
inset-block | inset-block-start inset-block-end | Accepteert een enkele waarde om zowel inset-block-star t als in te stellen inset-block-end .Accepteert ook twee waarden, waarbij de eerste specificeert inset-block-start en de tweede specificeert inset-block-end . |
Demo
Wijzig de schrijfmodus en waarden van inset-eigenschappen om een beter idee te krijgen van hoe ze werken:
Let op: de inset
eigenschap is niet logisch
Hoewel het inset
deel uitmaakt van de Logical Properties and Values-specificatie, definieert het geen logische blok- of inline offsets. In plaats daarvan worden fysieke offsets gedefinieerd, ongeacht de schrijfmodus, richting en tekstoriëntatie van het element. Met andere woorden, inset
is gewoon afkorting voor top
, right
, bottom
en left
.
Er is hier op GitHub enige discussie over het gebruik van enkele sleutelwoorden om deze eigenschap ook op een logische manier te kunnen gebruiken.
Dus, gebruiken we nog steeds fysieke offsets? Stel u voor dat u een badge of een logo in de linkerboven- en bovenhoek van uw pagina wilt hebben en, ongeacht de taal, wilt dat deze daar aanwezig is. In dat geval kunt u geen logische offsets gebruiken en moet u in plaats daarvan toevlucht nemen tot fysieke eigenschappen.
Browser-ondersteuning
Ondersteuning voor het inset
pand staat nog in de kinderschoenen. Op het moment van schrijven schat caniuse de wereldwijde ondersteuning op slechts 3,79%.
Bureaublad
Internet Explorer | Rand | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Nee | Nee | 66+ | Nee | Nee | Nee |
Mobiel
iOS Safari | Opera Mini | Android-browser | Chrome Android | Firefox Android |
---|---|---|---|---|
Nee | Nee | 68 | Nee | Nee |
Meer informatie
- CSS logische eigenschappen en waarden niveau 1 (specificatie, concept van de redacteur)
- Logische eigenschappen en waarden begrijpen (Smashing Magazine)
- CSS Logische Eigenschappen (CSS-Tricks)