BAB 12: Padding CSS
Mengatur jarak dalam elemen antara konten dan border menggunakan properti padding — dari shorthand, nilai persentase, hingga pengaruhnya terhadap kalkulasi lebar elemen.
Di bab sebelumnya kita mengatur margin — ruang di luar elemen yang mendorong elemen-elemen lain menjauh. Sekarang giliran sisi yang berlawanan: ruang di dalam elemen, antara konten dan batasnya. Inilah padding.
Kalau margin adalah halaman yang memberi jarak antar buku di rak, padding adalah margin kertas di dalam buku itu sendiri — ruang kosong yang membuat teks tidak menempel langsung ke tepi. Tanpa padding, teks dalam sebuah tombol atau kartu terasa sesak dan sulit dibaca.
Properti Padding per Sisi
Padding bekerja dengan pola yang persis sama seperti margin: ada empat properti individual untuk masing-masing sisi.
/* profil.css */
.kartu-proyek {
padding-top: 24px;
padding-right: 20px;
padding-bottom: 24px;
padding-left: 20px;
}
Nilai padding bisa menggunakan satuan px, em, rem, atau %. Satu hal yang berbeda dari margin: padding tidak bisa bernilai negatif. Margin negatif valid di CSS dan kadang berguna, tapi padding negatif tidak diizinkan — nilai negatif akan diabaikan browser.
Shorthand Padding
Shorthand padding bekerja dengan pola yang identik dengan margin: satu hingga empat nilai dengan urutan searah jarum jam dari atas.
/* profil.css */
/* 1 nilai: semua sisi sama */
.tombol-aksi {
padding: 12px;
}
/* 2 nilai: atas-bawah | kiri-kanan */
.lencana-status {
padding: 4px 12px;
}
/* 3 nilai: atas | kiri-kanan | bawah */
.header-kartu {
padding: 16px 20px 12px;
}
/* 4 nilai: atas | kanan | bawah | kiri (searah jarum jam) */
.panel-notifikasi {
padding: 12px 16px 12px 20px;
}
Pola 2 nilai adalah yang paling sering digunakan untuk komponen seperti tombol dan label — vertikal lebih kecil dari horizontal untuk membentuk proporsi yang nyaman di mata.
Untuk tombol, padding 8px 16px atau 12px 24px adalah titik awal yang bagus. Rasio horizontal dua kali lipat vertikal menciptakan bentuk yang terasa alami dan mudah diklik.
Padding dan Pengaruhnya pada Lebar Elemen
Ini adalah sumber kebingungan yang paling umum saat belajar CSS: padding menambah lebar elemen secara default. Jika sebuah elemen memiliki width: 300px dan padding: 20px, lebar totalnya di halaman menjadi 340px (300 + 20 kiri + 20 kanan).
/* profil.css */
.kartu-informasi {
width: 300px;
padding: 20px;
/* lebar total di layar: 340px */
}
Perilaku ini berasal dari model box CSS default yang disebut content-box — width hanya mengontrol area konten, sementara padding dan border ditambahkan di luar area tersebut.
Untuk sebagian besar proyek modern, perilaku ini diatasi dengan box-sizing: border-box, di mana width mencakup padding dan border sekaligus. Tapi itu topik yang akan dibahas lebih mendalam di Bab 77.
Ketika menghitung layout, ingat bahwa padding memperlebar elemen secara default. Jika kamu menetapkan width: 100% dan menambahkan padding, elemen bisa melampaui lebar container induknya dan memicu horizontal scroll.
Padding dengan Nilai Persentase
Ketika menggunakan % sebagai nilai padding, persentase itu dihitung dari lebar elemen induk — bukan dari tinggi atau lebar elemen itu sendiri. Ini berlaku untuk semua sisi, termasuk padding-top dan padding-bottom.
/* profil.css */
/* jika .container-portofolio lebarnya 800px,
padding-top: 10% = 80px (bukan 10% dari tinggi) */
.area-thumbnail {
padding-top: 56.25%; /* aspek rasio 16:9 */
position: relative;
}
Sifat ini dimanfaatkan untuk teknik klasik mempertahankan aspek rasio elemen — nilai 56.25% untuk padding-top menghasilkan tinggi yang selalu 56.25% dari lebar, membuat elemen berperilaku layaknya video 16
Padding pada Berbagai Elemen
Tombol dan Link
Padding adalah properti pertama yang dipasang saat mendesain tombol. Tanpa padding, teks di dalam tombol tidak memiliki ruang bernapas.
/* profil.css */
.tombol-hubungi {
padding: 10px 24px;
background-color: #3b82f6;
color: #ffffff;
border: none;
border-radius: 6px;
}
.tautan-nav {
padding: 8px 12px;
color: #475569;
}
Kartu Konten
Padding pada kartu menentukan jarak antara konten kartu dan tepi visualnya. Nilai yang terlalu kecil membuat kartu terasa sesak; terlalu besar membuat konten terasa tenggelam di ruang kosong.
/* profil.css */
.kartu-proyek {
padding: 24px;
border: 1px solid #e2e8f0;
border-radius: 8px;
}
/* padding asimetris: lebih besar di atas untuk judul */
.kartu-artikel {
padding: 32px 24px 24px;
}
Input Form
Padding pada elemen <input> menentukan seberapa luas area klik dan keterbacaan teks yang diketik.
/* profil.css */
.input-nama {
padding: 10px 14px;
border: 1px solid #cbd5e1;
border-radius: 6px;
width: 100%;
}
Latihan
Buka file profil.css dari proyek portofolio yang terus kita kerjakan bersama:
-
Buat class
.kartu-skilldenganpadding: 20px,border: 1px solid #e2e8f0, danborder-radius: 8px. Bandingkan penampilannya sebelum dan sesudah padding — amati bagaimana teks di dalam kartu mendapat ruang yang lebih nyaman. -
Buat class
.tombol-portofoliodenganpadding: 12px 28px. Kemudian coba ubah nilai padding-nya menjadi4px 8px. Rasakan perbedaan "kebesaran" tombol yang dihasilkan oleh padding yang berbeda. -
Buat sebuah
<div>denganwidth: 200px,padding: 30px, danbackground-color: #f1f5f9. Gunakan DevTools browser untuk mengukur lebar total elemen tersebut di halaman. Cocokkan hasilnya dengan perhitungan manual: apakah 260px?
Sekarang kita sudah menguasai dua dimensi ruang dalam CSS: margin di luar dan padding di dalam. Keduanya mengontrol jarak, tapi ada dimensi ketiga yang belum kita eksplorasi: ukuran elemen itu sendiri. Seberapa tinggi dan seberapa lebar sebuah elemen bisa diatur? Itu yang akan kita jawab di bab berikutnya.