CSS Kotak Model Visualisator

Sesuaikan margin, border, padding, dan dimensi konten dan lihat box model CSS secara langsung.

Dimensi

Padding (px)

Border (px)

Margin (px)

margin
border
padding
200 × 120

  

Cara menggunakan

  1. Masukkan nilai box model: tentukan margin, border, padding, dan dimensi konten di kolom atau slider interaktif.
  2. Jelajahi visualisasi: diagram klasik kotak bersarang diperbarui secara real-time, margin (oranye), border (kuning), padding (hijau), dan konten (biru), semua dengan label yang jelas.
  3. Salin CSS: klik Salin CSS untuk mendapatkan properti lengkap box model elemen yang dikonfigurasi.

Mengapa menggunakan visualizer box model CSS?

Box model CSS adalah salah satu konsep paling fundamental dalam tata letak web, dan salah satu sumber bug yang paling umum, terutama saat mencampur nilai box-sizing, penggabungan margin, dan dimensi border. Visualizer interaktif ini membuat box model konkret dan nyata: Anda menyesuaikan nilai dan langsung melihat bagaimana margin, border, dan padding bertumpuk di sekitar konten. Penting untuk belajar, debug, dan mengajar CSS.

Fitur

Pertanyaan umum

Apa perbedaan antara content-box dan border-box?

Dengan content-box (default), width dan height hanya berlaku untuk area konten, padding dan border ditambahkan ke ukuran total elemen. Dengan border-box, width dan height termasuk padding dan border, membuat ukuran lebih dapat diprediksi. Kebanyakan reset CSS modern menerapkan box-sizing: border-box ke semua elemen.

Apa itu penggabungan margin?

Saat dua margin vertikal bersentuhan (antara elemen blok yang berdekatan atau antara induk dan anak pertama/terakhir), mereka digabungkan menjadi satu margin yang sama dengan nilai yang lebih besar. Ini tidak terjadi dengan anak flex atau grid, atau dengan elemen yang memiliki padding atau border.

Bagaimana cara menghapus ruang ekstra di bawah elemen inline?

Elemen inline (seperti <img>) memiliki sedikit ruang di bawahnya yang disebabkan oleh perataan baris dasar line-height. Perbaiki dengan menetapkan display: block pada elemen, atau vertical-align: bottom, atau font-size: 0 pada induk.

Apa yang sebenarnya didefinisikan oleh CSS box model

CSS box model adalah representasi persegi panjang dari setiap elemen pada halaman web. Setiap elemen memiliki empat kotak konsentris: kotak content (tempat teks, gambar, elemen anak tinggal), kotak padding (ruang antara konten dan border, di dalam batas yang terlihat), kotak border (garis luar yang terlihat digambar di sekitar padding), dan kotak margin (ruang transparan di luar border yang memisahkan elemen ini dari tetangganya). Ukuran terlihat total elemen adalah content + padding + border; margin tidak terlihat tetapi mendorong elemen lain menjauh.

Konsep kritisnya adalah box-sizing. Secara default (box-sizing: content-box, nilai spesifikasi CSS 1), properti width dan height berlaku hanya untuk kotak content. Jika Anda mengatur width: 200px; padding: 20px; border: 2px solid, lebar total yang dirender adalah 200 + 40 + 4 = 244 piksel. Ini tidak intuitif: elemen lebar 200px sebenarnya mengambil 244 piksel ruang horizontal. Alternatif box-sizing: border-box (ditambahkan dalam CSS 3) membalikkan ini: properti width adalah ukuran terlihat total termasuk padding dan border, sehingga area content menyusut untuk muat. border-box adalah apa yang diharapkan kebanyakan developer; ini menjadi standar de facto melalui reset CSS Paul Irish tahun 2012 * { box-sizing: border-box }.

Memahami box model itu penting karena bug layout hampir selalu berasal dari kebingungan tentang nilai mana berlaku untuk kotak mana. Mengapa elemen saya lebih lebar dari yang saya tetapkan? adalah kejutan content-box. Mengapa margin saya tidak mendorong saudaranya ke bawah? biasanya adalah penggabungan margin. Mengapa padding-top: 50% berperilaku aneh? karena padding persentase dihitung relatif terhadap lebar induk, bukan tinggi. Setiap developer CSS menghadapi kebingungan ini; visualizer ini membuatnya konkret dengan membiarkan Anda menyesuaikan nilai dan melihat geometri kotak yang dihasilkan secara real time.

Bagaimana alat ini bekerja di balik layar

Diagram interaktif adalah serangkaian div berwarna bersarang yang sesuai dengan setiap kotak (margin oranye, border kuning, padding hijau, content biru). Saat Anda mengubah nilai input, JavaScript memperbarui atribut style inline div diagram sehingga mereka mencerminkan nilai secara numerik dan visual. Proporsi diskalakan untuk muat di area pratinjau; nilai piksel absolut akan mendorong diagram keluar layar untuk input tipikal.

Perhitungan ukuran total tergantung pada mode box-sizing. Untuk content-box: lebar total = lebar content + padding-left + padding-right + border-left + border-right. Untuk border-box: lebar total = nilai width (padding dan border dikurangi dari area content). Alat ini menghitung kedua mode secara bersamaan saat Anda mengaktifkan box-sizing, sehingga Anda dapat membandingkan secara langsung.

Output CSS yang dihasilkan menggunakan input Anda sebagai nilai properti: box-sizing: border-box; width: 200px; padding: 10px 20px; border: 2px solid; margin: 1rem auto;. Salin ini langsung ke stylesheet Anda dan terapkan kelas yang sesuai. Tidak ada yang meninggalkan browser Anda; semuanya berjalan secara lokal dalam JavaScript. Tidak ada analitik, tidak ada backend, tidak ada akun. Muat ulang dan statusnya hilang.

Sejarah singkat CSS box model

Alur kerja dunia nyata

Jebakan umum dan artinya

Privasi: semuanya berjalan di browser Anda

Alat pembelajaran dan visualisasi CSS hadir dalam dua rasa: halaman HTML sederhana yang menjalankan JavaScript sisi klien (pribadi, cepat, tanpa setup) dan editor cloud dengan proyek yang disimpan (kolaboratif tetapi dengan trade-off privasi). Alat ini adalah jenis pertama. Nilai yang Anda masukkan, status toggle box-sizing Anda, CSS yang dihasilkan Anda: semuanya tetap dalam sesi browser Anda. Muat ulang halaman dan statusnya hilang kecuali Anda menyalin CSS terlebih dahulu.

Taruhan privasi rendah di sini karena nilai box model jarang mengandung informasi sensitif. Tetap saja, kurangnya analitik penting: Anda dapat bereksperimen dengan bebas tanpa proses trial-and-error Anda direkam. Sangat berguna dalam pengaturan kelas atau pelatihan perusahaan di mana memiliki siswa atau peserta pelatihan mendaftar akun di platform pihak ketiga adalah titik gesekan. Ini adalah halaman statis tunggal tanpa backend, dapat digunakan di browser apa pun, termasuk mesin perusahaan yang terkunci.

Saat alat lain adalah pilihan yang tepat

Pertanyaan umum lainnya

Haruskah saya menggunakan universal * { box-sizing: border-box }?

Untuk sebagian besar proyek, ya. Proposal Paul Irish tahun 2012 sekarang adalah default industri dan sejalan dengan bagaimana sebagian besar developer mengharapkan width dan height bekerja. Framework seperti Bootstrap, Tailwind, Bulma, dan Material UI dirilis dengan border-box sebagai default. Proyek modern yang dimulai pada 2026 harus mengatur *, *::before, *::after { box-sizing: border-box; } di bagian atas reset mereka, dan jarang perlu memikirkan box-sizing lagi. Override khusus ke content-box dimungkinkan untuk elemen individu di mana border-box akan mengacaukan hal-hal.

Mengapa margin saya mendorong induk ke bawah alih-alih mendorong saudara?

Ini adalah penggabungan margin. Ketika margin atas anak bertemu dengan tepi atas induk tanpa padding/border di antaranya, margin anak melarikan diri dan diterapkan ke induk sebagai gantinya. Perbaikan: tambahkan padding-top: 1px ke induk (nilai apa pun berfungsi), tambahkan border: 1px solid transparent, atur induk menjadi kontainer flex atau grid (penggabungan ditekan dalam mode tersebut), atau gunakan display: flow-root pada induk (aturan modern eksplisit menetapkan konteks pemformatan block baru). Semua ini menghalangi margin dari penggabungan.

Apa perbedaan antara margin: auto dan margin: 0?

margin: 0 berarti tidak ada margin; elemen duduk rata dengan tetangganya. margin: auto berarti browser menghitung margin untuk mendistribusikan ruang horizontal yang tersisa, biasanya digunakan untuk memusatkan elemen block: margin-left: auto; margin-right: auto; membagi ruang yang tersisa secara merata. margin: auto auto auto auto (atau shorthand margin: auto) memusatkan baik secara horizontal maupun vertikal di dalam kontainer flex. Di luar flex/grid, hanya margin auto horizontal yang berfungsi.

Apa perbedaan outline dari border?

Outline menggambar di sekitar elemen tetapi berada di luar box model: tidak menambah ukuran elemen dan tidak mendorong tetangga menjauh. Border adalah bagian dari box model dan menambah ukuran yang dirender. Outline biasanya digunakan untuk cincin fokus (outline :focus-visible) di mana Anda ingin indikator yang terlihat tanpa menggeser layout. Border digunakan ketika garis seharusnya menjadi bagian dari struktur elemen. Jangan hapus outline: none tanpa menyediakan indikator fokus alternatif; melakukan itu merusak aksesibilitas keyboard.

Mengapa menggunakan properti logis seperti margin-inline-start?

Properti logis (margin-block-start, padding-inline, dll.) beradaptasi dengan arah penulisan dokumen. Dalam bahasa Inggris (kiri-ke-kanan), margin-inline-start sama dengan margin-left. Dalam bahasa Arab atau Ibrani (kanan-ke-kiri), itu menjadi margin-right secara otomatis. Untuk situs yang mendukung beberapa bahasa, properti logis membuat internasionalisasi CSS otomatis. Untuk situs khusus bahasa Inggris, mereka setara dalam efek tetapi memberi sinyal niat lebih jelas: margin ini berada di awal aliran teks daripada margin ini berada di sisi kiri.

Bagaimana cara membuat kotak dengan aspect-ratio tetap?

Cara modern adalah properti CSS aspect-ratio: aspect-ratio: 16/9 pada div membuat tingginya secara otomatis 9/16 dari lebarnya. Didukung di semua browser modern (2021+). Teknik lama menggunakan padding-top sebagai persentase: div dengan padding-top: 56.25% membuat rasio 16:9 (9/16 = 56.25%). Trik padding-top masih berfungsi tetapi sintaks properti lebih bersih. Gunakan aspect-ratio untuk kode baru; hack lama tetap di Tailwind dan alat lain yang membutuhkan dukungan browser yang luas.

Alat terkait

CSS Multi-Kolom Generator Generator Grid CSS Generator Flexbox CSS Generator Radius Border CSS