The inset
properti di CSS adalah singkatan untuk empat sifat inset, top
, right
, bottom
dan left
dalam satu deklarasi. Sama seperti empat properti individual itu sendiri, inset
tidak berpengaruh pada elemen non-posisi (statis). Dengan kata lain, elemen harus mendeklarasikan position
nilai eksplisit sebelum properti inset dapat diterapkan.
.box ( inset: 10px 20px 30px 40px; position: relative; )
inset
pada awalnya ditentukan dalam spesifikasi CSS Logical Properties and Values Level 1, yang ada di Editor's Draft per 20 April 2020.
Sintaksis
Seperti yang mungkin telah Anda kumpulkan dari contoh di atas, inset
ikuti sintaks multi-nilai yang sama dari padding
dan margin
. Itu berarti ia menerima sebanyak empat nilai (untuk offset mendeklarasikan untuk top
, right
, bottom
dan left
) dan sedikitnya satu nilai (untuk mendeklarasikan sama offset untuk semua empat sifat). Dan, seperti padding
dan margin
, nilai mengalir searah jarum jam, dimulai dengan 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 */ )
Sebelumnya inset
, kita harus mendeklarasikan setiap inset
sub-properti secara terpisah, seperti ini:
.box ( position: absolute; top: 0; right: 0; bottom: 0; left: 0; )
Sekarang, kita dapat melakukannya ke satu baris CSS:
.box ( position: absolute; inset: 0; /* ? */ )
Nilai
The inset
properti menerima nilai-nilai numerik seperti atas, kanan, bawah dan kiri. Nilai-nilai tersebut dapat berupa panjang CSS yang valid, seperti px
, em
, rem
dan %
, antara lain.
Mari kita bicara tentang properti logis
Kami hanya akan menggores permukaan properti logis di sini karena fokus sebenarnya ada pada inset
dan sub-properti terkait. Dapatkan informasi mendalam tentang topik ini dalam artikel Majalah Smashing ini oleh Rachel Andrew.
Ada lebih inset
sub-sifat dari top
, right
, bottom
dan left
namun, untuk memahami mereka, itu layak berkenalan dengan sifat dan nilai-nilai logis.
Konten dapat ditampilkan dalam berbagai arah (yaitu mode penulisan), termasuk kiri-ke-kanan, kanan-ke-kiri, atas-ke-bawah, dan bawah-ke-atas. Ketika kita berbicara tentang konsep “logis”, sebenarnya kita mengacu pada titik awal berdasarkan arah penulisan konten.
Bayangkan Anda sedang membangun situs web yang perlu mendukung bahasa kiri-ke-kanan (LTR), seperti bahasa Inggris dan Spanyol, serta bahasa kanan-ke-kiri (RTL), seperti Persia atau Arab. Katakanlah Anda ingin menambahkan margin antara ikon dan teks garis di sebelahnya.
Biasanya, Anda mungkin menjangkau margin-right
properti untuk mendukung LTR, lalu menambahkan seperangkat aturan lain yang menghapus margin tersebut dan menggantinya dengan margin-left
untuk RTL:
.icon ( margin-right: 1em; )
/* or .icon:dir(rtl) */ (dir="rtl") .icon ( margin-right: 0; margin-left: 1em; )
Ini adalah bagian kecil dari sebuah halaman. Sekarang bayangkan membangun situs web besar dengan cara ini - itu banyak pekerjaan! Tetapi sifat logis membuatnya mudah dengan mempertimbangkan mode penulisan untuk kami. Misalnya, kita dapat menambahkan margin ke akhir elemen, di mana pun itu terjadi:
.icon ( margin-inline-end: 1em; )
Inilah yang kami maksud saat merujuk ke properti logika - properti tersebut relatif terhadap mode penulisan daripada arah fisik. Lihat bagaimana properti logis jauh lebih logis untuk digunakan?
Sisipkan properti logis
Jadi, mengetahui apa yang sekarang Anda ketahui tentang properti logika, berikut adalah empat sub-properti inset tambahan:
Properti Logis | Setara Aliran Horizontal | Apa yang dilakukannya |
---|---|---|
inset-block-start | top | Menentukan offset untuk tepi awal dalam arah yang tegak lurus dengan arah penulisan. |
inset-block-end | bottom | Menentukan offset untuk tepi akhir dalam arah tegak lurus dengan arah penulisan. |
inset-inline-start | left | Menentukan offset untuk tepi awal dalam arah penulisan, yang memetakan ke offset fisik bergantung pada mode penulisan elemen, arah dan orientasi teks. |
inset-inline-end | right | Menentukan offset untuk tepi akhir dalam arah penulisan. |
Kita bahkan dapat mengelompokkan keempat sub-properti tersebut menjadi dua properti singkatan tambahan:
Properti Logis | Singkatan Untuk | Apa yang dilakukannya |
---|---|---|
inset-inline | inset-inline-start inset-inline-end | Menerima satu nilai untuk menyetel inset-inline-start dan inset-inline-end .Juga menerima dua nilai, di mana yang pertama menentukan inset-inline-start dan yang kedua menentukan inset-inline-end . |
inset-block | inset-block-start inset-block-end | Menerima satu nilai untuk menyetel inset-block-star t dan inset-block-end .Juga menerima dua nilai, di mana yang pertama menentukan inset-block-start dan yang kedua menentukan inset-block-end . |
Demo
Ubah mode penulisan dan nilai properti inset untuk mendapatkan gambaran yang lebih baik tentang cara kerjanya:
Perhatian: inset
Properti ini tidak logis
Meskipun inset
merupakan bagian dari spesifikasi Properti Logis dan Nilai, itu tidak mendefinisikan blok logis atau offset sebaris. Sebaliknya, ia mendefinisikan offset fisik, terlepas dari mode penulisan, arah, dan orientasi teks elemen. Dengan kata lain, inset
hanya singkatan untuk top
, right
, bottom
dan left
.
Ada beberapa diskusi di GitHub mengenai penggunaan beberapa kata kunci agar dapat menggunakan properti ini dengan cara yang logis juga.
Jadi, apakah kita masih menggunakan offset fisik? Bayangkan Anda ingin lencana atau logo dipasang di sudut atas dan kiri halaman Anda dan, apa pun bahasanya, Anda ingin lencana itu ada di sana. Dalam hal ini Anda tidak dapat menggunakan offset logis dan perlu menggunakan properti fisik sebagai gantinya.
Dukungan Browser
Dukungan untuk inset
properti masih dalam tahap awal. Pada tulisan ini, caniuse memperkirakan dukungan global hanya 3,79%.
Desktop
Internet Explorer | Tepi | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
Tidak | Tidak | 66+ | Tidak | Tidak | Tidak |
Seluler
iOS Safari | Opera Mini | Browser Android | Chrome Android | Firefox Android |
---|---|---|---|---|
Tidak | Tidak | 68 | Tidak | Tidak |
Informasi lebih lanjut
- Properti Logis CSS dan Nilai Level 1 (Spesifikasi, Draf Editor)
- Memahami Properti Logis dan Nilai (Majalah Smashing)
- Properti Logis CSS (CSS-Trik)