inset
Proprietatea în CSS este o prescurtare pentru cele patru proprietăți inserate, top
, right
, bottom
și left
într - o singură declarație. La fel ca cele patru proprietăți individuale în sine, inset
nu are niciun efect asupra elementelor ne-poziționate (statice). Cu alte cuvinte, un element trebuie să declare o position
valoare explicită înainte ca proprietățile inserției să poată intra în vigoare.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
este inițial definit în specificațiile de nivel 1 Proprietăți logice și valori CSS, care se află în Proiectul editorului din 20 aprilie 2020.
Sintaxă
După cum probabil ați adunat din exemplul de mai sus, inset
urmează aceeași sintaxă multi-valoare a lui padding
și margin
. Aceasta înseamnă că acceptă cât mai multe patru valori (la compensari pronunțăm pentru top
, right
, bottom
și left
) și cât mai puține o valoare ( de a declara un egal de compensare pentru toate cele patru proprietăți). Și, ca padding
și margin
, valorile curg în sensul acelor de ceasornic, începând cu 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 */ )
Înainte inset
, ar trebui să declarăm fiecare inset
sub-proprietate separat, astfel:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Acum, putem pur și simplu asta pentru o singură linie de CSS:
.box ( position: absolute; inset: 0; /* ? */ )
Valori
inset
Proprietatea acceptă valori numerice la fel ca partea de sus, dreapta, jos și la stânga. Aceste valori pot fi orice lungime valid CSS, cum ar fi px
, em
, rem
și %
, printre altele.
Să vorbim despre proprietățile logice
Vom zgâria aici doar suprafața proprietăților logice, deoarece focalizarea reală este pusă inset
și sub-proprietățile sale conexe. Obțineți o adâncime profundă a subiectului în acest articol al revistei Smashing de Rachel Andrew.
Există mai multe inset
sub-proprietăți decât top
, și right
, dar, pentru a le înțelege, merită să vă familiarizați cu proprietățile și valorile logice.bottom
left
Conținutul poate fi afișat în direcții diferite (de exemplu, moduri de scriere), inclusiv de la stânga la dreapta, de la dreapta la stânga, de sus în jos și de jos în sus. Când vorbim despre concepte „logice”, ne referim cu adevărat la punctul de plecare bazat pe direcția de scriere a conținutului.
Imaginați-vă că construiți un site web care trebuie să accepte atât limbile de la stânga la dreapta (LTR), cum ar fi engleza și spaniola, cât și limbile de la dreapta la stânga (RTL), cum ar fi persana sau araba. Să presupunem că doriți să adăugați o marjă între o pictogramă și un text rând lângă aceasta.
Bineînțeles, ați putea ajunge la margin-right
proprietate pentru a accepta LTR, apoi adăugați un alt set de reguli care elimină acea marjă și o înlocuiește cu margin-left
RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Aceasta este o mică parte a unei pagini. Acum imaginați-vă că construiți un site web mare în acest fel - este o mulțime de muncă! Dar proprietățile logice îl fac rapid, luând în considerare modul de scriere pentru noi. De exemplu, putem adăuga margine la sfârșitul elementului, oriunde se întâmplă:
.icon ( margin-inline-end: 1em; )
La asta ne referim când ne referim la proprietățile logice - sunt mai degrabă relativ la modul de scriere decât la o direcție fizică. Vedeți cum proprietățile logice sunt mult mai logice pentru a lucra?
Inserați proprietăți logice
Deci, știind ce știți acum despre proprietățile logice, iată patru sub-proprietăți de inserare suplimentare:
Proprietate logică | Echivalent de debit orizontal | Ce face |
---|---|---|
inset-block-start | top | Specifică decalajul pentru marginea de pornire în direcția perpendiculară pe direcția de scriere. |
inset-block-end | bottom | Specifică decalajul pentru muchia finală în direcția perpendiculară pe direcția de scriere. |
inset-inline-start | left | Specifică decalajul pentru marginea de pornire în direcția de scriere, care se mapează la un decalaj fizic în funcție de modul de scriere al elementului, direcția și orientarea textului. |
inset-inline-end | right | Specifică decalajul pentru marginea finală în direcția de scriere. |
Putem chiar să grupăm aceste patru proprietăți secundare în două proprietăți de scurtare suplimentare:
Proprietate logică | Stenografie pentru | Ce face |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Acceptă o singură valoare pentru a seta ambele inset-inline-start și inset-inline-end .De asemenea, acceptă două valori, unde prima specifică inset-inline-start și a doua specifică inset-inline-end . |
inset-block | inset-block-start inset-block-end | Acceptă o singură valoare pentru a seta atât inset-block-star t, cât și inset-block-end .De asemenea, acceptă două valori, unde prima specifică inset-block-start și a doua specifică inset-block-end . |
Demo
Schimbați modul de scriere și valorile proprietăților inserției pentru a vă face o idee mai bună despre modul în care funcționează:
Heads up: inset
Proprietatea nu este logică
Deși inset
face parte din specificația Proprietăți și valori logice, nu definește blocul logic sau compensările în linie. În schimb, definește compensările fizice, indiferent de modul de scriere al elementului, direcția și orientarea textului. Cu alte cuvinte, inset
este doar o prescurtare pentru top
, right
, bottom
și left
.
Există unele discuții aici pe GitHub cu privire la utilizarea unor cuvinte cheie pentru a putea utiliza această proprietate și într-un mod logic.
Deci, mai folosim compensări fizice? Imaginați-vă că doriți o insignă sau o siglă fixată în colțul din stânga sus și al paginii și, indiferent de limbă, doriți să fie acolo. În acest caz, nu puteți utiliza compensări logice și va trebui să recurgeți la proprietăți fizice.
Suport pentru browser
Asistența pentru inset
proprietate este încă în stadiile incipiente. Începând cu această scriere, Caniuse estimează sprijinul global la doar 3,79%.
Desktop
Internet Explorer | Margine | Firefox | Crom | Safari | Operă |
---|---|---|---|---|---|
Nu | Nu | 66+ | Nu | Nu | Nu |
Mobil
Safari iOS | Opera mini | Browser Android | Chrome Android | Firefox Android |
---|---|---|---|---|
Nu | Nu | 68 | Nu | Nu |
Mai multe informatii
- Proprietăți și valori logice CSS Nivelul 1 (Specificații, schiță a editorului)
- Înțelegerea proprietăților și valorilor logice (Smashing Magazine)
- Proprietăți logice CSS (Trucuri CSS)