Panduan lengkap CSS Logical Properties untuk layout yang adaptif dengan arah teks
CSS Logical Properties memungkinkan Anda membuat layout yang bekerja secara konsisten terlepas dari arah teks (LTR/RTL) atau mode penulisan (horizontal/vertikal).
/* Basic Logical Properties */
.box {
margin-inline-start: 1rem;
padding-block-end: 2rem;
}
/* Logical Sizing */
.container {
inline-size: 100%;
max-block-size: 80vh;
}
/* Logical Borders */
.card {
border-inline: 2px solid #9333ea;
border-block-start: none;
}
đ Penjelasan Detail:
âĸ *-inline
- Mengacu pada dimensi horizontal (kiri/kanan)
âĸ *-block
- Mengacu pada dimensi vertikal (atas/bawah)
âĸ *-start
- Awal dari arah teks (kiri untuk LTR, kanan untuk RTL)
âĸ *-end
- Akhir dari arah teks (kanan untuk LTR, kiri untuk RTL)
/* Logical Float */
img {
float: inline-start;
margin-inline-end: 1rem;
}
/* Logical Positioning */
.tooltip {
inset-inline-start: 0;
inset-block-start: 100%;
}
/* Logical Text Alignment */
.rtl-text {
text-align: end;
direction: rtl;
}
Logical Properties didukung di Chrome 69+, Firefox 41+, Safari 12.1+, Edge 79+. Beberapa properti memerlukan prefix (-webkit-) di Safari.
/* Physical to Logical Mappings */
.mapping {
/* left â */ margin-inline-start: 1rem;
/* right â */ margin-inline-end: 1rem;
/* top â */ margin-block-start: 1rem;
/* bottom â */ margin-block-end: 1rem;
}
/* Size Properties */
.sizes {
/* width â */ inline-size: 100px;
/* height â */ block-size: 200px;
/* min-width â */ min-inline-size: 50px;
/* max-height â */ max-block-size: 300px;
}
đ Penjelasan Detail:
âĸ margin-inline
- Margin kiri dan kanan (atau kanan dan kiri di RTL)
âĸ padding-block
- Padding atas dan bawah
âĸ inline-size
- Lebar dalam konteks writing-mode
âĸ block-size
- Tinggi dalam konteks writing-mode
âĸ inset-*
- Pengganti top/right/bottom/left untuk positioning
/* Logical Properties with Writing Modes */
.vertical-text {
writing-mode: vertical-rl;
margin-block: 2rem; /* Now horizontal */
padding-inline: 1rem; /* Now vertical */
}
/* Logical Border Radius */
.rounded {
border-start-start-radius: 10px;
border-end-end-radius: 10px;
}
/* Logical Overflow */
.scrollable {
overflow-inline: auto;
overflow-block: hidden;
}
Writing-mode: Chrome 8+, Firefox 41+, Safari 5.1+, Edge 79+. Logical border-radius: Chrome 89+, Firefox 66+, Safari 15+, Edge 89+.
Gunakan logical properties untuk membuat layout yang benar-benar responsif terhadap perubahan arah teks dan writing mode.
/* â
Good - Using logical properties */
.modern-layout {
margin-inline: auto;
padding-block: 1rem;
max-inline-size: 1200px;
}
/* â
Good - With fallback */
.with-fallback {
margin-left: 1rem;
margin-right: 1rem;
margin-inline: 1rem;
}
/* â Avoid - Mixing logical and physical */
.confusing {
margin-inline-start: 1rem;
padding-right: 1rem;
}
đ Penjelasan Detail:
âĸ Gunakan secara konsisten - Hindari mencampur logical dan physical properties
âĸ Sediakan fallback - Untuk browser yang lebih lama jika diperlukan
âĸ Manfaatkan shorthand - Seperti margin-inline untuk kode yang lebih ringkas
âĸ Uji berbagai writing-mode - Pastikan layout bekerja di semua konteks
âĸ Pertimbangkan aksesibilitas - Logical properties membantu mendukung RTL