Box Model CSS
Bongkar rahasia di balik ukuran dan spasi elemen HTML! Pelajari konsep fundamental Box Model CSS yang terdiri dari content, padding, border, dan margin.
Bongkar Kotak Ajaib HTML: Kenalan Sama CSS Box Model!
Pernah bertanya-tanya gimana browser nentuin ukuran sebuah tombol, seberapa jauh jarak antar paragraf, atau kenapa ada ruang kosong di sekitar gambar? Jawabannya ada di konsep super penting yang namanya CSS Box Model.
Bayangin aja, setiap elemen HTML di halaman web-mu itu sebenernya dianggap sama browser kayak sebuah kotak (box). Nah, Box Model ini adalah aturan main yang ngejelasin gimana "kotak" itu disusun dan diukur. Ngertiin Box Model itu kunci banget buat bisa ngatur layout dan spasi elemen dengan presisi.
Anatomi Sebuah "Kotak" Elemen di CSS
Setiap kotak elemen di CSS terdiri dari empat lapisan utama, dari dalem ke luar:
-
Content (Konten):
- Ini adalah "isi" sebenernya dari elemenmu: teks, gambar, video, atau elemen lain yang ada di dalemnya.
- Ukuran area konten ini bisa kamu atur pake properti
width
danheight
.
-
Padding (Bantalan Dalam):
- Ini adalah ruang kosong transparan yang ada di antara area konten dan border (garis tepi).
- Padding ini ngasih "napas" buat konten biar gak nempel banget sama bordernya.
- Kamu bisa ngatur tebel padding pake properti
padding
. Background elemen bakal keliatan sampe ke area padding.
-
Border (Garis Tepi):
- Ini adalah garis yang ngelilingin area padding dan konten.
- Kamu bisa ngatur ketebalan, gaya (solid, dashed, dotted), dan warna border pake properti
border
.
-
Margin (Bantalan Luar):
- Ini adalah ruang kosong transparan yang ada di luar border.
- Margin ini yang ngasih jarak antara satu elemen dengan elemen lain di sekitarnya.
- Kamu bisa ngatur tebel margin pake properti
margin
. Background elemen induk (parent) yang bakal keliatan di area margin.
Visualisasi Box Model:
Bayangin kayak gini:
+---------------------------------------------------+
| Margin (Luar Border, Transparan) |
| +-------------------------------------------+ |
| | Border (Garis Tepi Elemen) | |
| | +-----------------------------------+ | |
| | | Padding (Dalam Border, Transparan) | | |
| | | +---------------------------+ | | |
| | | | | | | |
| | | | CONTENT AREA | | | |
| | | | (Teks, Gambar, dll.) | | | |
| | | | | | | |
| | | +---------------------------+ | | |
| | +-----------------------------------+ | |
| +-------------------------------------------+ |
+---------------------------------------------------+
Browser DevTools (Inspect Element) punya visualisasi Box Model yang keren banget buat ngebantu kamu liat ukuran content, padding, border, dan margin dari elemen yang lagi kamu pilih. Coba deh sering-sering dipake!
Properti-Properti CSS buat Ngatur Box Model
Sekarang, kita liat properti CSS apa aja yang dipake buat ngontrol tiap lapisan Box Model:
1. width
dan height
: Ngatur Ukuran Area Konten
- Properti
width
nentuin lebar area konten. - Properti
height
nentuin tinggi area konten. - Nilainya bisa pake unit
px
,%
,em
,rem
,vw
,vh
, dll.css .kotak-artikel { width: 600px; height: 400px; /* Area kontennya jadi 600x400 pixel */ } .gambar-responsif { width: 100%; /* Lebarnya 100% dari lebar parent-nya */ height: auto; /* Tingginya nyesuaiin rasio aspek gambar */ }
- PENTING: Secara default,
width
danheight
ini cuma ngatur ukuran area konten aja. Ukuran total elemen (yang keliatan di layar) bakal lebih gede kalau kamu nambahin padding dan border. (Ini berhubungan samabox-sizing
yang bakal kita bahas bentar lagi).
2. padding
: Ngasih Napas di Dalem Elemen
- Properti
padding
nambahin ruang di antara konten dan border. - Kamu bisa ngatur padding buat tiap sisi secara terpisah:
padding-top
padding-right
padding-bottom
padding-left
- Atau pake shorthand
padding
:padding: nilai-atas nilai-kanan nilai-bawah nilai-kiri;
(urutannya kayak jarum jam, mulai dari atas).padding: nilai-atas/bawah nilai-kiri/kanan;
(kalau atas-bawah sama, kiri-kanan sama).padding: nilai-atas nilai-kiri/kanan nilai-bawah;
(kalau kiri-kanan sama).padding: nilai-semua-sisi;
(kalau semua sisi sama).
css .tombol { padding: 10px 20px; /* Atas/bawah 10px, kiri/kanan 20px */ } .info-penting { padding-top: 15px; padding-bottom: 15px; padding-left: 25px; padding-right: 25px; /* Atau bisa juga: padding: 15px 25px; */ }
3. border
: Ngasih Garis Tepi yang Jelas
-
Properti
border
nambahin garis di sekeliling padding (dan konten). -
Kamu bisa ngatur tiap aspek border:
border-width
: Ketebalan border (misal,1px
,2px
,medium
).border-style
: Gaya garis (misal,solid
,dashed
,dotted
,double
,groove
,ridge
,inset
,outset
,none
).border-color
: Warna border.
-
Biasanya orang pake shorthand
border
:border: ketebalan gaya warna;
(misal,border: 1px solid black;
).
-
Kamu juga bisa ngatur border buat tiap sisi secara spesifik (
border-top
,border-right
,border-bottom
,border-left
, atau bahkanborder-top-style
,border-right-color
, dll.). -
border-radius
: Buat bikin sudut border jadi melengkung (rounded corners).- Nilainya bisa pake
px
atau%
. - Contoh:
border-radius: 5px;
(semua sudut melengkung 5px). border-radius: 10px 0 10px 0;
(atas-kiri & bawah-kanan 10px, sisanya 0).
css .kartu { border: 1px solid #cccccc; border-radius: 8px; padding: 16px; } .gambar-lingkaran { width: 100px; height: 100px; border: 3px solid purple; border-radius: 50%; /* Bikin jadi lingkaran sempurna */ }
- Nilainya bisa pake
4. margin
: Ngatur Jarak Antar Elemen
- Properti
margin
nambahin ruang kosong di luar border, misahin elemen ini sama elemen lain. - Sama kayak
padding
, kamu bisa ngatur margin buat tiap sisi (margin-top
,margin-right
,margin-bottom
,margin-left
) atau pake shorthandmargin
dengan urutan yang sama.css h1 { margin-bottom: 20px; /* Jarak bawah h1 ke elemen berikutnya 20px */ } .item-galeri { margin: 10px; /* Jarak 10px di semua sisi item galeri */ } p { margin: 1em 0; /* Atas/bawah 1em, kiri/kanan 0 */ }
- Collapsing Margins (Margin yang Ambruk): Ini perilaku khusus buat margin vertikal (atas dan bawah) dari elemen-elemen blok yang berdampingan. Kalau ada dua margin vertikal ketemu, yang dipake adalah margin yang nilainya lebih besar (bukan dijumlahin). Margin kiri dan kanan gak ambruk. Ini kadang bikin bingung pemula, tapi penting buat diketahui.
box-sizing
: Ngubah Cara width
dan height
Dihitung - SUPER PENTING!
Nah, ini properti yang bisa ngubah "aturan main" gimana width
dan height
diinterpretasiin. Ada dua nilai utama:
-
content-box
(Default):- Kalau kamu set
width: 200px;
, itu artinya area kontennya yang lebarnya 200px. - Kalau kamu nambahin
padding: 10px;
danborder: 1px;
, maka lebar total elemen yang keliatan di layar jadi:200px (konten) + 20px (padding kiri-kanan) + 2px (border kiri-kanan) = 222px
. - Ini kadang bikin ngatur layout jadi ribet, karena nambahin padding/border bakal ngubah ukuran total elemen.
- Kalau kamu set
-
border-box
:- Kalau kamu set
width: 200px;
pakebox-sizing: border-box;
, itu artinya lebar total elemen, termasuk padding dan border, adalah 200px. - Area kontennya bakal otomatis ngecil buat nyesuaiin padding dan border.
- Misal,
width: 200px; padding: 10px; border: 1px; box-sizing: border-box;
. Lebar total tetep 200px. Lebar area kontennya jadi:200px - 20px (padding) - 2px (border) = 178px
. - Ini jauh lebih intuitif buat ngatur layout! Kamu bisa nentuin lebar elemen, terus nambahin padding/border tanpa khawatir ukuran totalnya jadi berubah dan ngerusak layout.
- Kalau kamu set
Praktik Terbaik Umumnya:
Banyak developer suka ngeset box-sizing: border-box;
buat semua elemen di awal file CSS mereka biar layouting jadi lebih gampang:
html {
box-sizing: border-box;
}
*, *::before, *::after { /* Pilih semua elemen, termasuk pseudo-element */
box-sizing: inherit; /* Biar semua elemen mewarisi box-sizing dari html */
}
/* Atau cara yang lebih simpel dan umum: */
/*
* {
box-sizing: border-box;
}
*/
Dengan border-box
, hidup jadi lebih mudah!
Box Model ini adalah konsep inti dari CSS. Paham gimana content, padding, border, dan margin bekerja (dan gimana box-sizing
ngubah perhitungannya) itu krusial banget buat bisa bikin layout yang presisi dan tampilan yang rapi.
Jangan bosen buat "Inspect Element" di browser dan liat visualisasi Box Model-nya. Itu cara paling cepet buat ngerti gimana ukuran dan spasi elemenmu sebenernya dihitung sama browser.
Kuis Box Model CSS
Pertanyaan 1 dari 5
Dalam CSS Box Model, lapisan apa yang berada di antara area konten (content) dan garis tepi (border)?