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.
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: none, gantilah dengan gaya fokus lain yang jelas.| kotak konten | Tempat teks dan gambar berada |
| padding | Ruang di dalam bingkai; menampilkan latar |
| border (bingkai) | Garis di sekeliling padding; perlu gaya |
| margin | Ruang transparan di luar bingkai |
| box-sizing: border-box | width mencakup padding dan bingkai |
| margin collapsing (penyatuan margin) | Margin vertikal yang bersentuhan: yang lebih besar menang |
| inline-block | Mengalir di dalam baris tetapi mematuhi lebar dan padding |
- Urutkan lapisannya dari dalam ke luar.
- content-box: width 300px, padding 20px, border 5px. Berapa lebar totalnya?
- border-box: width 300px, padding 20px, border 5px. Berapa lebar area kontennya?
- 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
padding: 1px 2px 3px 4px: berapa yang di kiri?- margin-bottom 20px bertemu margin-top 30px. Berapa besar celahnya?
- Mengapa
border: 2px #333tidak menggambar apa pun?- Tidak ada gaya bingkai seperti solid
- Warnanya terlalu gelap
- Bingkai memerlukan margin
- Nilai display mana yang membuat span bisa diberi lebar dan padding vertikal sambil tetap berada di dalam baris?
- inline-block
- inline
- none
- Bagaimana cara menempatkan blok selebar 600px di tengah secara horizontal?
- margin: 0 auto
- padding: auto
- text-align: center on the block
- Bagian kotak mana yang menampilkan warna latar?
- Konten dan padding (serta di bawah bingkai)
- Hanya konten
- Margin juga
- 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