[Easy] Box Model
1. Apa itu CSS Box Model?
CSS Box Model menjelaskan bagaimana ukuran dan jarak elemen dihitung.
Setiap elemen terdiri dari:
content: teks atau media yang sebenarnyapadding: ruang antara content dan borderborder: garis tepi di sekitar content + paddingmargin: ruang luar antara elemen
.card {
width: 240px;
padding: 16px;
border: 1px solid #ddd;
margin: 12px;
}
2. Apa yang dikontrol oleh box-sizing?
box-sizing menentukan apakah padding dan border termasuk dalam width/height yang dideklarasikan.
content-box (default)
Width yang dideklarasikan = hanya content.
Width yang dirender = width + padding kiri/kanan + border kiri/kanan.
.box {
box-sizing: content-box;
width: 100px;
padding: 10px;
border: 1px solid #000;
}
Width akhir adalah 100 + 20 + 2 = 122px.
border-box
Width yang dideklarasikan mencakup content + padding + border.
.box {
box-sizing: border-box;
width: 100px;
padding: 10px;
border: 1px solid #000;
}
Width akhir tetap 100px.
3. Mengapa border-box sering digunakan?
Karena membuat perhitungan layout menjadi lebih mudah diprediksi dan lebih cocok untuk desain responsif.
Reset yang umum digunakan:
* {
box-sizing: border-box;
}
Banyak tim juga menerapkannya pada pseudo-element:
*,
*::before,
*::after {
box-sizing: border-box;
}
4. Margin collapse (poin penting dalam wawancara)
Margin vertikal antara elemen block dapat mengalami collapse (penggabungan).
.a {
margin-bottom: 24px;
}
.b {
margin-top: 16px;
}
Jaraknya adalah 24px, bukan 40px.
Cara menghindari margin collapse:
- Tambahkan
paddingatauborderpada elemen induk - Gunakan
display: flow-rootpada elemen induk - Gunakan layout
flexataugrid
5. Tips debugging Box Model
- Gunakan panel box model di DevTools browser
- Tambahkan sementara
outline: 1px solid reduntuk memeriksa batas elemen - Gunakan sistem jarak yang konsisten (misalnya, skala 4/8) untuk konsistensi
6. Jawaban cepat untuk wawancara
Q1: Apa perbedaan antara margin dan padding?
padding berada di dalam border; margin berada di luar border.
Q2: Mengapa mengatur box-sizing: border-box secara global?
Untuk mencegah width/height yang tidak terduga dan menyederhanakan perhitungan layout.
Q3: Apakah width selalu dihormati?
Width dapat dibatasi oleh min-width, max-width, layout elemen induk, dan perilaku content.