Kotak dengan sudut tajam terasa kaku, dan hampir semua antarmuka modern mengatasinya dengan satu property: border-radius. Property ini melengkungkan sudut tepi luar border — dari lengkung halus 4px pada input, lingkaran penuh pada avatar, hingga bentuk pil pada tombol. Pada chapter ini kita mempelajari urutan nilainya, longhand untuk satu sudut tertentu, perbedaan px dan persen, serta pasangan overflow: hidden yang membuat gambar ikut mengikuti lengkung kartunya.

Dasar dan Urutan Nilai #

Shorthand border-radius menerima satu hingga empat nilai dengan pola yang sudah kita kenal dari padding dan margin — searah jarum jam mulai dari sudut kiri atas:

Jumlah nilaiArtinya
1Keempat sudut sama
2Nilai 1: kiri atas + kanan bawah; nilai 2: kanan atas + kiri bawah
3Nilai 1: kiri atas; nilai 2: kanan atas + kiri bawah; nilai 3: kanan bawah
4Kiri atas, kanan atas, kanan bawah, kiri bawah
css
.kartu-profil {
  border-radius: 12px;          /* keempat sudut membulat */
}

.panel-obrolan {
  border-radius: 16px 16px 0 0; /* hanya dua sudut atas */
}

Demo berikut menampilkan keduanya:

Pola dua sudut atas itulah yang lazim dipakai gelembung chat yang menempel pada tombol kirim.

Radius per Sudut dan Pilihan Satuan #

Untuk menyasar satu sudut, gunakan longhand border-top-left-radius, border-top-right-radius, border-bottom-right-radius, dan border-bottom-left-radius. Nilainya boleh ditulis dalam px maupun persen, dan pilihan satuan menentukan bentuk akhirnya:

css
.avatar {
  width: 96px;
  height: 96px;         /* wajib persegi agar hasilnya lingkaran */
  border-radius: 50%;   /* setengah lebar dan setengah tinggi */
}

.foto-lanskap {
  width: 240px;
  height: 120px;
  border-radius: 50%;   /* bukan lingkaran, melainkan ellipse */
}

Demo berikut memakai radius 50% pada elemen persegi dan persegi panjang:

Karena itulah avatar selalu dibuat persegi — atau diberi aspect-ratio: 1 — sebelum diberi radius 50%.

Bentuk Pill dan Nilai Berlebihan #

Tombol dan lencana modern sering berbentuk pil. Caranya tidak perlu menghitung setengah tinggi elemen — cukup beri radius yang jauh melebihi kebutuhan:

css
.tombol-pill {
  padding: 10px 24px;
  border-radius: 999px;
}

Saat radius sudut yang bertemu saling tumpang-tindih, browser mengecilkan seluruh radius secara proporsional hingga pas — karenanya 999px aman untuk tombol dengan tinggi berapa pun dan lebih stabil daripada persen, yang nilainya bergantung pada lebar dan tinggi elemen.

Memotong Sudut Gambar dengan overflow: hidden #

Radius hanya melengkungkan background dan border elemen itu sendiri. Konten anak — terutama img — tetap menonjol menembus sudut yang sudah membulat. Solusinya satu pasang deklarasi:

css
.kartu-artikel {
  border-radius: 12px;
  overflow: hidden;     /* area di luar lengkung ikut memotong anak */
}

Demo berikut merangkai tiga bentuk dari property yang sama — lingkaran, pil, dan kartu ber-gambar. Blok gradien menggantikan gambar agar demo tetap mandiri tanpa berkas eksternal:

Kombinasi kartu ber-radius dan overflow: hidden menjadi standar de facto untuk kartu ber-gambar.

Kesalahan Umum #

GejalaPenyebabPerbaikan
Lingkaran berubah menjadi ellipseElemen tidak persegi; 50% mengikuti lebar dan tinggi masing-masingSamakan width dan height, atau tambah aspect-ratio: 1
Gambar menonjol di sudut kartu membulatRadius tidak memotong elemen anakTambah overflow: hidden pada kartu
Radius tidak terlihat sama sekaliElemen tanpa background, border, atau isi visualIngat radius membentuk tepi visual; tanpa lapisan visual tidak ada yang tampak
Sudut tombol berubah bentuk saat teksnya bergantiNilai persen mengikuti lebar dan tinggi yang berubah-ubahPakai 999px untuk bentuk pil yang stabil

Ringkasan #

border-radius membentuk sudut kotak dari lengkung kecil hingga lingkaran dan pil, dengan urutan nilai searah jarum jam dan longhand untuk sudut tertentu. Persen mengikuti lebar dan tinggi elemen — lingkaran pada kotak persegi, ellipse pada persegi panjang — sementara nilai 999px memberi bentuk pil yang stabil. Untuk kartu ber-gambar, pasangkan radius dengan overflow: hidden agar konten anak ikut terpotong. Kotak kini punya bentuk; chapter berikutnya menambah kedalaman visualnya lewat box-shadow.