Apa itu padding
Padding adalah ruang di dalam sebuah elemen, di antara isi dan border-nya. Padding ikut memakai background elemen, jadi inilah property yang memberi ruang lega pada tombol, kartu, atau badge.
Area biru adalah isinya. Pita hijau di sekelilingnya adalah padding 24px di setiap sisi, dan border berada di luarnya.
Shorthand padding: 1, 2, 3, atau 4 nilai
padding mengatur keempat sisi dalam satu deklarasi. Jumlah nilai menentukan sisi mana mendapat nilai mana, searah jarum jam mulai dari atas:
| Deklarasi | Atas | Kanan | Bawah | Kiri |
|---|---|---|---|---|
padding: 10px; | 10 | 10 | 10 | 10 |
padding: 10px 20px; | 10 | 20 | 10 | 20 |
padding: 10px 20px 30px; | 10 | 20 | 30 | 20 |
padding: 10px 20px 30px 40px; | 10 | 20 | 30 | 40 |
Dua nilai berarti "vertikal, horizontal". Tiga nilai berarti "atas, horizontal, bawah". Empat nilai berputar searah jarum jam: atas, kanan, bawah, kiri (dalam bahasa Inggris, cara mengingat yang populer adalah TRouBLe).
Ketik shorthand apa saja di bawah. Kotaknya digambar ulang, dan browser melaporkan nilai yang didapat setiap sisi:
Coba 8px, 8px 24px, 0 0 40px, dan 1em 5%. Nilai yang tidak valid, seperti -10px, diabaikan, dan kotaknya tetap memakai padding valid yang terakhir.
Satu sisi sekaligus
Setiap sisi punya property sendiri, yang lebih jelas daripada shorthand empat nilai kalau kamu hanya ingin mengubah satu sisi:
.card {
padding-top: 16px;
padding-right: 24px;
padding-bottom: 16px;
padding-left: 24px;
}
Shorthand yang diikuti satu sisi adalah pola yang umum: atur semuanya, lalu sesuaikan satu sisi.
.card {
padding: 16px;
padding-bottom: 32px; /* only the bottom changes */
}
Urutannya penting di sini: shorthand padding yang ditulis setelah padding-bottom akan me-reset sisi bawah kembali ke 16px.
Padding logis: padding-inline dan padding-block
padding-left dan padding-right bersifat fisik: keduanya tetap di sisi yang sama dalam bahasa apa pun. Property logis justru mengikuti arah tulisan, dan itulah yang kamu butuhkan di situs yang juga ditampilkan dari kanan ke kiri:
| Property logis | Dalam bahasa Indonesia (kiri ke kanan) | Dalam bahasa Arab (kanan ke kiri) |
|---|---|---|
padding-inline-start | kiri | kanan |
padding-inline-end | kanan | kiri |
padding-inline | kiri dan kanan | kanan dan kiri |
padding-block | atas dan bawah | atas dan bawah |
Padding memperbesar kotak (kecuali dengan border-box)
Secara default, width hanya lebar isinya, dan padding ditambahkan di atasnya. Kotak dengan width: 200px dan padding: 20px lebarnya 240px:
box-sizing: border-box menjaga kotak tetap 200px dan mengambil padding dari bagian dalamnya. Halaman box model membahas hitungan lengkapnya.
Padding persentase
Padding persentase diukur terhadap lebar elemen induk, di keempat sisi, termasuk atas dan bawah:
Dari sinilah asal trik lama "padding-top: 56.25%" untuk kotak video 16:9. Sekarang aspect-ratio: 16 / 9 melakukan hal yang sama secara langsung.
Padding pada tombol dan link
Padding adalah cara yang tepat untuk memperbesar link atau tombol, karena padding adalah bagian dari elemen sehingga juga menjadi bagian dari area yang bisa kamu klik atau ketuk. Margin memang menambah ruang, tetapi tidak memperbesar area sasarannya.
.btn {
display: inline-block; /* lets vertical padding take space in the line */
padding: 10px 18px; /* a comfortable touch target */
}
Nilai yang diterima padding
| Nilai | Contoh | Catatan |
|---|---|---|
| Panjang | 12px, 1rem, 0.5em | em mengikuti ukuran font elemen |
| Persentase | 5% | Dari lebar containing block |
0 | padding: 0 | Tidak perlu satuan |
| Negatif | -10px | Tidak valid, diabaikan |
auto | auto | Tidak valid untuk padding (berlaku untuk margin) |
Kesalahan yang sering terjadi
- Urutan yang salah di shorthand empat nilai. Urutannya atas, kanan, bawah, kiri, searah jarum jam.
- Kotak membesar saat kamu menambahkan padding. Atur
box-sizing: border-box. - Memakai padding untuk memisahkan dua elemen. Jarak antar elemen adalah margin, sedangkan padding adalah ruang di dalam satu elemen. Lihat margin vs padding.
- Padding vertikal pada link inline yang menimpa baris lain. Ubah link itu menjadi
inline-block. - Padding negatif atau
padding: auto. Keduanya tidak valid dan diabaikan tanpa pemberitahuan.
Pertanyaan yang sering diajukan
Apa itu padding di CSS?
Padding adalah ruang di antara isi sebuah elemen dan border-nya. Padding adalah bagian dari elemen, jadi padding menampilkan warna background elemen dan memperbesar area yang bisa diklik pada link atau tombol.
Bagaimana urutan nilai di shorthand padding?
Searah jarum jam mulai dari atas: padding: top right bottom left;. Dengan tiga nilai, urutannya atas, kiri dan kanan, bawah. Dengan dua nilai, atas dan bawah, lalu kiri dan kanan. Dengan satu nilai, keempat sisi.
Apakah padding memperbesar ukuran elemen?
Dengan box-sizing: content-box yang merupakan default, ya: padding ditambahkan ke width dan height. Dengan box-sizing: border-box, padding diambil dari bagian dalam lebar, jadi elemen tetap berukuran sesuai yang kamu tetapkan.
Padding persentase dihitung relatif terhadap apa?
Terhadap lebar containing block, untuk keempat sisi. padding-top: 50% adalah setengah dari lebar elemen induk, bukan tingginya. Itulah sebabnya trik aspect ratio lama memakai padding vertikal.
Apakah padding bisa bernilai negatif?
Tidak bisa. Nilai padding negatif tidak valid dan deklarasinya diabaikan. Untuk menarik konten ke luar, pakai margin negatif.
Bagaimana cara menambahkan padding di HTML?
Dengan CSS, di stylesheet atau atribut style: <div style="padding: 16px;">. HTML tidak punya atribut padding untuk elemen umum. Atribut lama cellpadding pada tabel sudah usang dan digantikan oleh padding pada td dan th.