Box Model CSS: Memahami Ukuran dan Jarak

Setiap elemen di CSS adalah kotak dengan content, padding, border, dan margin. Kuasai box model — dan box-sizing — dan kamu akhirnya akan paham cara kerja ukuran dan jarak yang sebenarnya.

Diterbitkan 10 Juli 20267 menit bacaOleh ACY Partner Indonesia
Box model CSS — content, padding, border, dan margin
300 × 250Slot Iklan TersediaPasang iklan Anda di sini

Kalau ada satu konsep yang membedakan orang yang sekadar “agak ngerti” CSS dengan orang yang benar-benar menguasainya, jawabannya box model. Konsep inilah yang menjelaskan kenapa sebuah elemen berukuran segitu, kenapa muncul jarak di tempat yang sama sekali nggak kamu duga, dan gimana caranya menaruh celah persis di posisi yang kamu inginkan. Begitu konsep ini “nyangkut” di kepala, banyak hal di CSS yang tadinya bikin pusing langsung jadi masuk akal.

Intinya sebenarnya sederhana: di CSS, setiap elemen itu sebuah kotak. Teks dan gambar sekalipun sebetulnya duduk di dalam kotak. Dan setiap kotak tersusun dari empat lapisan yang saling membungkus dari dalam ke luar. Yuk kita bedah satu per satu.

Empat lapisan sebuah kotak

Bayangkan sebuah elemen sebagai beberapa persegi yang bertumpuk di dalam satu sama lain, dari yang paling dalam ke paling luar:

  1. Content — isi sebenarnya: teks, gambar, atau apa pun yang ada di dalamnya. Ukurannya ditentukan oleh width dan height.
  2. Padding — jarak di dalam kotak, di antara content dan border. Tugasnya mendorong border supaya menjauh dari content.
  3. Border — garis yang mengelilingi padding. Kamu bisa atur lebar, gaya, dan warnanya.
  4. Margin — jarak di luar kotak, yang memisahkan elemen ini dari elemen tetangganya. Tugasnya mendorong elemen lain supaya menjauh.

Ada cara gampang buat mengingat dua lapisan jarak ini: padding itu di dalam, margin itu di luar. Padding menambah ruang di dalam kotak dan ikut mewarisi warna latar kotak, sedangkan margin menambah ruang di sekeliling kotak dan selalu transparan. Tertukar antara keduanya adalah salah satu sumber kebingungan paling umum, jadi ada baiknya kamu luruskan dulu sejak awal.

Padding: jarak di dalam

Padding memberi ruang napas antara content sebuah elemen dan tepinya. Tanpa padding, teks bisa terasa sesak karena menempel langsung ke border:

.box {
  padding: 20px;
}

Baris itu menambahkan jarak 20 piksel di keempat sisi sekaligus. Tapi kamu juga bisa mengatur tiap sisi secara terpisah, atau memakai versi singkatnya (shorthand):

padding: 10px 20px;          /* atas/bawah 10, kiri/kanan 20 */
padding: 10px 20px 30px 40px; /* atas, kanan, bawah, kiri (searah jarum jam) */
padding-top: 10px;            /* hanya satu sisi */

Versi empat nilai dibaca searah jarum jam mulai dari atas: atas, kanan, bawah, kiri. Versi dua nilai artinya “vertikal, horizontal.” Pola shorthand seperti ini juga dipakai di margin, jadi sebaiknya kamu biasakan dari sekarang.

Margin: jarak di luar

Margin cara kerjanya mirip banget dengan padding, bedanya margin menambah jarak di luar border, sehingga sebuah elemen jadi terpisah dari elemen di sebelahnya:

.box {
  margin: 20px;
}

Aturan shorthand-nya sama persis (margin: 10px 20px;, atur per sisi, dan seterusnya). Ada satu trik yang sangat berguna: dengan menyetel margin kiri dan kanan ke auto, sebuah elemen blok akan otomatis rata tengah secara horizontal di dalam wadahnya:

.container {
  width: 600px;
  margin: 0 auto;   /* atas/bawah 0, kiri/kanan auto = rata tengah */
}

Pola margin: 0 auto ini adalah cara klasik untuk membuat blok dengan lebar tetap jadi rata tengah di halaman, dan kamu bakal sering banget memakainya nanti.

Margin bisa runtuh (collapse) — perilaku unik yang perlu kamu tahu

Ada satu hal yang sering bikin pemula bingung: ketika dua margin vertikal saling bertemu (misalnya margin bawah sebuah paragraf ketemu margin atas paragraf di bawahnya), keduanya tidak dijumlahkan. Yang terjadi justru keduanya “runtuh” menjadi satu margin saja, yaitu sebesar nilai yang lebih besar. Jadi kalau margin bawah 20px bertemu margin atas 30px, jarak yang kamu dapat cuma 30px, bukan 50px. Hal ini hanya berlaku untuk margin atas/bawah, dan tidak pernah terjadi pada padding. Ini bukan bug, melainkan memang perilaku yang dirancang seperti itu. Cukup ingat bahwa hal ini ada, biar nanti kamu nggak bingung sendiri saat jaraknya terasa janggal.

Border: garis di antaranya

Border posisinya ada di antara padding dan margin. Kamu bisa mengatur lebar, gaya, dan warnanya sekaligus, biasanya cukup ditulis dalam satu shorthand:

.box {
  border: 2px solid #00838f;
}

Itu artinya border garis padat berwarna teal selebar 2 piksel. Selain solid, ada pilihan gaya lain seperti dashed, dotted, dan none. Sudut kotaknya pun bisa kamu bikin membulat lewat border-radius:

.box {
  border-radius: 8px;   /* sudut membulat halus */
}

Kalau nilai border-radius-nya cukup besar (atau kamu pakai 50% pada kotak persegi), kotaknya bakal berubah jadi lingkaran penuh — persis cara avatar bulat dan tombol melingkar dibuat.

Bagian yang rumit: bagaimana width dihitung

Nah, sekarang kita masuk ke bagian yang nyaris menjebak semua orang. Coba bayangkan kamu menulis kode seperti ini:

.box {
  width: 200px;
  padding: 20px;
  border: 5px solid black;
}

Wajar saja kalau kamu mengira kotak ini lebarnya bakal 200px. Tapi secara default, ternyata bukan segitu! Berdasarkan aturan default yang lama, width itu hanya menentukan lebar content-nya saja — sementara padding dan border ditambahkan di luar angka itu. Jadi lebar kotak yang benar-benar tampil di layar adalah:

200 (content) + 20 + 20 (padding) + 5 + 5 (border) = lebar 250px

Kejutan inilah — kotak yang ternyata lebih besar dari width yang kamu setel — yang sudah bikin para pemula bingung selama lebih dari dua dekade. Untungnya, solusinya sederhana banget.

Solusinya: box-sizing: border-box

CSS menyediakan property bernama box-sizing yang mengubah cara width dihitung. Begitu kamu setel ke border-box, nilai width otomatis sudah memperhitungkan padding dan border, sehingga kotak dengan width: 200px betul-betul selebar 200px — persis seperti yang kamu bayangkan:

.box {
  box-sizing: border-box;
  width: 200px;
  padding: 20px;
  border: 5px solid black;
  /* Kotak ini lebarnya pas 200px. Padding dan border ikut masuk ke dalam. */
}

Cara ini jauh lebih intuitif, makanya hampir semua proyek modern langsung menerapkannya ke seluruh elemen, biasanya ditaruh paling atas di stylesheet:

* {
  box-sizing: border-box;
}

Tanda * itu disebut “universal selector” — dia mencocokkan setiap elemen yang ada. Cuma dengan satu baris ini, seluruh halaman jadi memakai model perhitungan ukuran yang lebih masuk akal.

Mulai setiap proyek dengan box-sizing: border-box

Letakkan * { box-sizing: border-box; } di bagian paling atas stylesheet-mu, dan kamu nggak perlu lagi pusing dengan kejutan ukuran tadi. Dengan baris ini, width berarti lebar total yang benar-benar terlihat — sudah termasuk padding dan border — dan itu memang cara yang paling intuitif buat kebanyakan orang. Nggak heran kalau baris ini jadi salah satu yang paling sering muncul di awal file CSS modern. Biasakan menulisnya sejak awal.

Melihat box model sendiri

Kamu nggak perlu cuma membayangkan semua ini, karena browser bisa menampilkannya langsung buat kamu. Buka developer tools (umumnya lewat F12 atau klik kanan → Inspect), pilih salah satu elemen, dan kamu bakal melihat diagram berwarna dari kotaknya: content di bagian tengah, lalu padding, border, dan margin yang melapisinya satu per satu, lengkap dengan ukuran di tiap lapisan. Ini cara paling ampuh untuk benar-benar memahami box model, sekaligus alat debugging yang wajib kamu kuasai. Setiap kali jaraknya terasa aneh, diagram ini hampir selalu langsung menunjukkan penyebabnya.

Penutup

Box model adalah fondasi dari tata letak CSS, dan sekarang kamu sudah memahaminya:

  • Setiap elemen itu kotak yang punya empat lapisan: content, padding (jarak di dalam), border (garisnya), dan margin (jarak di luar).
  • Padding dan margin sama-sama memakai shorthand yang serupa (satu nilai untuk semua sisi, atau atas/kanan/bawah/kiri searah jarum jam). margin: 0 auto bikin blok dengan lebar tetap jadi rata tengah.
  • Margin vertikal bisa runtuh menjadi nilai yang lebih besar di antara keduanya — itu perilaku yang memang dirancang begitu, bukan bug.
  • border mengatur lebar, gaya, dan warna garis, sedangkan border-radius membulatkan sudut.
  • Secara default, width belum menghitung padding dan border — makanya kotak sering keluar lebih besar dari dugaan. Atasi dengan box-sizing: border-box yang diterapkan ke semua elemen lewat * { box-sizing: border-box; }.

Setelah box model kamu kuasai, sekarang kamu siap mengatur jarak dan ukuran dengan lebih percaya diri. Di pembahasan berikutnya, kita akan menata teksnya sendiri — font dan tipografi — mulai dari keluarga font, ukuran, ketebalan, jarak antarhuruf, sampai cara membuat teks yang enak dipandang sekaligus nyaman dibaca.

Tag:cssfrontendbox modeltata letakpemula
728 × 90Slot Iklan TersediaPasang iklan Anda di sini

Artikel Terkait

Lihat Semua Artikel

Artikel yang Mungkin Kamu Suka

Apa Itu Framework Frontend? — chip kode dengan tag komponen
Frontend / Dasar

Apa Itu Framework Frontend?

Penjelasan ramah untuk pemula tentang apa itu framework frontend, kenapa mereka ada, masalah apa yang mereka selesaikan dibanding JavaScript biasa, dan kapan kamu memang sebaiknya memakainya.

20 Sep 20268 menit baca
Sampul fundamentals frontend bertuliskan Apa Itu Frontend dan HTML + CSS + JS
Frontend / Dasar

Apa Itu Frontend Development?

Panduan ramah pemula tentang frontend development: bagian website yang kamu lihat dan klik secara langsung. Pahami cara kerja HTML, CSS, dan JavaScript, serta bedanya frontend dengan backend.

20 Sep 20268 menit baca
Ilustrasi sampul untuk Apa yang Dikerjakan Frontend Developer
Frontend / Dasar

Apa yang Dikerjakan Frontend Developer: Panduan untuk Pemula

Penjelasan ramah pemula tentang apa yang sebenarnya dikerjakan frontend developer setiap hari: mengubah desain jadi antarmuka yang berfungsi, membangun UI yang bisa dipakai ulang, sampai urusan responsif, aksesibilitas, dan kecepatan.

20 Sep 20269 menit baca
Kartu judul bertuliskan Styling dan Interaktivitas di atas latar biru gelap ACY Partner
Frontend / Dasar

Cara Kerja Styling dan Interaktivitas

Penjelasan ramah pemula soal bagaimana CSS menyulap HTML polos jadi tampilan rapi, dan bagaimana JavaScript menambahkan perilaku — pola berpikir struktur, gaya, perilaku saat membangun halaman web.

20 Sep 20268 menit baca
Tiga lapisan front-end menyatu di satu halaman web
Frontend / Dasar

Cara HTML, CSS, dan JavaScript Bekerja Bersama

Panduan praktis untuk pemula: bikin satu tombol kecil, beri struktur dengan HTML, tampilan dengan CSS, dan perilaku dengan JavaScript, lalu lihat ketiga lapisan ini bekerja sama di halaman nyata.

20 Sep 20268 menit baca
Sampul ikhtisar praktik terbaik frontend
Frontend / Dasar

Ikhtisar Praktik Terbaik Frontend

Peta ringkas tentang apa itu frontend yang baik — HTML bermakna, CSS rapi, JavaScript secukupnya, desain responsif, performa, dan progressive enhancement, lengkap dengan arahan untuk mendalaminya.

20 Sep 20268 menit baca