edubun
Bahasa Indonesia

Model kotak

Beri sebuah kotak width: 200px, padding 16px, dan bingkai 2px, maka secara bawaan kotak itu memakan 236 piksel melintang di layar, bukan 200.

Setiap elemen adalah kotak

Untuk menata halaman, browser mengubah setiap elemen menjadi persegi panjang. Setiap kotak punya empat lapisan, dari dalam ke luar. Area konten memuat teks atau gambar. Padding adalah ruang di dalam kotak, antara konten dan bingkai, dan memakai warna latar kotak. Bingkai (border) adalah garis di sekeliling padding. Margin adalah ruang di luar bingkai yang mendorong kotak lain menjauh; margin selalu transparan. Alat pengembang browser menggambar diagram persis seperti ini saat kamu memeriksa sebuah elemen, lengkap dengan angkanya.

Konten, padding, bingkai, dan margin. Dengan ukuran bawaan content-box, width hanya mengatur konten: 200 + 16 + 16 + 2 + 2 = 236 piksel lebarnya.

Singkatan untuk empat sisi

padding, margin, dan border-width menerima satu sampai empat nilai, searah jarum jam mulai dari atas. padding: 16px mengatur keempat sisi. padding: 8px 16px mengatur atas dan bawah menjadi 8, kiri dan kanan menjadi 16. padding: 4px 8px 12px 16px mengatur atas, kanan, bawah, dan kiri dengan urutan itu. Setiap sisi juga bisa diatur sendiri, misalnya margin-top. border: 2px solid #333 mengatur lebar, gaya, dan warna sekaligus; tanpa gaya seperti solid atau dashed, bingkai sama sekali tidak digambar.

box-sizing: pengaturan yang diubah hampir semua orang

Secara bawaan, width dan height hanya mengatur ukuran area konten, lalu padding dan bingkai ditambahkan di atasnya. Itulah model content-box, dan model ini membuat tata letak jadi canggung: dua kotak width: 50% yang diberi padding sedikit saja tidak lagi muat berdampingan. Dengan box-sizing: border-box, lebar sudah mencakup padding dan bingkai, dan area konten menyusut untuk memberi ruang. Banyak stylesheet dimulai dengan menerapkannya pada setiap elemen lewat *, *::before, *::after { box-sizing: border-box; }.

Kotak blok dan inline

Perilaku kotak berbeda-beda menurut nilai display-nya. Kotak blok, seperti p, h1, dan section, dimulai di baris baru dan melebar memenuhi lebar wadahnya. Kotak inline, seperti a, strong, dan span, berada di dalam baris teks; width dan height tidak berlaku padanya, dan padding serta margin vertikalnya tidak mendorong baris lain menjauh. display: inline-block berada di tengah-tengah: kotaknya mengalir di dalam baris seperti sebuah kata, tetapi mematuhi lebar, tinggi, dan padding, sehingga cocok untuk label kecil dan tombol.

Margin yang menyatu

Ada satu aturan yang mengejutkan hampir semua orang. Saat margin bawah sebuah blok bertemu margin atas blok berikutnya, keduanya tidak dijumlahkan; yang lebih besar yang menang. Paragraf dengan margin-bottom: 20px yang diikuti judul dengan margin-top: 30px akhirnya berjarak 30 piksel, bukan 50. Ini disebut margin collapsing (penyatuan margin), dan hanya terjadi pada margin vertikal antarblok dalam alur normal, tidak di dalam wadah flex atau grid. Untuk menempatkan blok di tengah secara horizontal, beri ia width atau max-width dan margin: 0 auto: kedua margin samping otomatis membagi ruang kosong sama rata.

Outline digambar di luar bingkai dan tidak memakan ruang, itulah sebabnya browser memakainya untuk cincin fokus keyboard. Jika kamu menghapus outline dengan outline: none, gantilah dengan gaya fokus lain yang jelas.
kotak kontenTempat teks dan gambar berada
paddingRuang di dalam bingkai; menampilkan latar
border (bingkai)Garis di sekeliling padding; perlu gaya
marginRuang transparan di luar bingkai
box-sizing: border-boxwidth mencakup padding dan bingkai
margin collapsing (penyatuan margin)Margin vertikal yang bersentuhan: yang lebih besar menang
inline-blockMengalir di dalam baris tetapi mematuhi lebar dan padding
  1. Urutkan lapisannya dari dalam ke luar.
  2. content-box: width 300px, padding 20px, border 5px. Berapa lebar totalnya?
  3. border-box: width 300px, padding 20px, border 5px. Berapa lebar area kontennya?
  4. Apa yang diatur margin: 10px 20px?
    • 10 atas dan bawah, 20 kiri dan kanan
    • 10 kiri dan kanan, 20 atas dan bawah
    • 10 atas, 20 bawah
  5. padding: 1px 2px 3px 4px: berapa yang di kiri?
  6. margin-bottom 20px bertemu margin-top 30px. Berapa besar celahnya?
  7. Mengapa border: 2px #333 tidak menggambar apa pun?
    • Tidak ada gaya bingkai seperti solid
    • Warnanya terlalu gelap
    • Bingkai memerlukan margin
  8. Nilai display mana yang membuat span bisa diberi lebar dan padding vertikal sambil tetap berada di dalam baris?
    • inline-block
    • inline
    • none
  9. Bagaimana cara menempatkan blok selebar 600px di tengah secara horizontal?
    • margin: 0 auto
    • padding: auto
    • text-align: center on the block
  10. Bagian kotak mana yang menampilkan warna latar?
    • Konten dan padding (serta di bawah bingkai)
    • Hanya konten
    • Margin juga
Poin penting
  • Konten, padding, bingkai, margin.
  • content-box menambahkan padding dan bingkai pada width; border-box sudah mencakupnya.
  • Singkatan berjalan searah jarum jam dari atas; margin vertikal yang bersentuhan menyatu.
Sumber kursus ini (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Diperiksa: 2026-10-17