K

Command Palette

Search for a command to run...

Daftar

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:

  1. 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 dan height.
  2. 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.
  3. 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.
  4. 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.)      |   |   |   |
|   |   |   |                           |   |   |   |
|   |   |   +---------------------------+   |   |   |
|   |   +-----------------------------------+   |   |
|   +-------------------------------------------+   |
+---------------------------------------------------+

Contoh Visualisasi Box Model di Browser DevTools 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!

Contoh Visualisasi Box Model di Browser DevTools

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 dan height 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 sama box-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 bahkan border-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 */
    }

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 shorthand margin 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:

  1. content-box (Default):

    • Kalau kamu set width: 200px;, itu artinya area kontennya yang lebarnya 200px.
    • Kalau kamu nambahin padding: 10px; dan border: 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.
  2. border-box:

    • Kalau kamu set width: 200px; pake box-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.

Praktik Terbaik Umumnya: Banyak developer suka ngeset box-sizing: border-box; buat semua elemen di awal file CSS mereka biar layouting jadi lebih gampang:

css
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)?