Box Model

Pada dasarnya, browser menganggap setiap elemen HTML sebagai sebuah kotak persegi empat
Author : Celvine
Last Update : 06 March 2026

1. Penjelasan

Setiap kotak (elemen) dalam CSS terdiri dari empat lapisan, dari dalam ke luar:

  1. Content: Tempat teks atau gambar berada. Ukurannya diatur oleh width dan height.
  2. Padding: Ruang kosong di dalam elemen, antara konten dan border. Padding membuat konten tidak menempel ke pinggir.
  3. Border: Garis yang membungkus padding dan konten.
  4. Margin: Ruang kosong di luar elemen. Digunakan untuk memberi jarak antar elemen agar tidak berdempetan.
Perbedaan Margin dan Padding
Perbedaan Margin dan Padding

Masalah: Secara default, jika kamu memberi width: 300px lalu menambah padding: 20px dan border: 5px, total lebar elemenmu akan menjadi 350px (300 + 20 + 20 + 5 + 5). Untuk menghindari pusing menghitung manual, gunakan properti box-sizing: border-box;.

2. Sintaksis & Properti

Berikut adalah cara mengatur Box Model:

.kotak {
  /* 1. Ukuran Konten */
  width: 300px;
  height: auto;

  /* 2. Padding (Atas Kanan Bawah Kiri) */
  padding: 20px; 
  
  /* 3. Border (Tebal Gaya Warna) */
  border: 2px solid #3498db;

  /* 4. Margin (Jarak Luar) */
  margin: 10px auto; /* 'auto' untuk membuat elemen ke tengah secara horizontal */

  /* Solusi agar ukuran tetap konsisten */
  box-sizing: border-box;
}

Contoh lengkap

<!DOCTYPE html>
<html>

<head>
  <style>
    .container {
      width: 600px;
    }

    .col {
      box-sizing: border-box;
      width: 300px;
      padding: 20px;
      border: 5px solid black;
      float: left;
    }
  </style>
</head>

<body>

  <div class="container">
    <div class="col">Kolom 1</div>
    <div class="col">Kolom 2</div>
  </div>

</body>

</html>

3. Studi Kasus: Membuat Kartu Testimonial

Mari kita terapkan Box Model untuk membuat kartu kutipan (testimonial) agar teksnya nyaman dibaca dan posisinya rapi di tengah halaman.

<blockquote class="testimonial-card">
  <p>"Belajar CSS dengan Box Model ternyata seru banget! Sekarang layout saya tidak lagi berantakan."</p>
  <cite>- Andi, Pemula Web</cite>
</blockquote>
.testimonial-card {
  width: 400px;
  background-color: #f9f9f9;
  
  /* Padding memberikan 'padding' pada teks agar tidak mepet ke garis */
  padding: 30px;
  
  /* Border memberikan batas yang jelas */
  border-left: 5px solid #2ecc71; 
  
  /* Margin menjauhkan kartu ini dari elemen lain di atas/bawahnya */
  margin: 50px auto;
  
  /* Menghaluskan sudut */
  border-radius: 4px;
  
  /* Menjaga lebar tetap 400px meskipun ada padding/border */
  box-sizing: border-box;
}

On this page