Subtlety & Corner Radius — UI/UX

Subtlety dan Border Radius Detail kecil membuat perbedaan besar antara desain amatir dan profesional. Dua aspek paling penting: subtlety dan corner radius…

Subtlety artinya memakai beda yang kecil tapi cukup: garis 1px abu muda, shadow yang samar, sudut yang sedikit membulat. Corner radius adalah seberapa bulat sudut sebuah kotak, ditulis dengan border-radius. Bayangin lintasan lari di stadion. Di tikungan, jalur dalam dan jalur luar melengkung dari titik pusat yang sama, jadi lebar tiap jalur tetap sama sepanjang tikungan. Kalau jalur luar dibuat sama lengkungnya dengan jalur dalam, jalurnya melebar di tikungan dan pelari di luar dirugikan. Sudut kotak di dalam kotak bekerja persis seperti itu.

🧪 Tebakan cepat: Kartu Kamar Teras punya sudut 16px, dan fotonya diberi jarak 8px dari tepi kartu. Supaya "serasi", foto juga diberi radius 16px. Jarak antara tepi kartu dan foto di sudutnya masih 8px? Jawabannya ada di bagian "Radius bersarang: luar = dalam + padding".

Subtlety: beda kecil yang cukup

Kartu cukup dipisah dari latar dengan beda yang kecil. Bandingkan dua kartu ini:

/* Keras: semuanya berteriak */
.card-keras { border: 3px solid #000; box-shadow: 5px 5px 0 #000; border-radius: 20px; }

/* Halus: cukup untuk terlihat, gak mencuri perhatian */
.card {
  border: 1px solid #E5E7EB;
  border-radius: 0.75rem;                      /* 12px */
  padding: 24px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.card button { border-radius: 0.5rem; }        /* 8px */

Skala radius: sedikit nilai, dipakai konsisten

Sama seperti jarak, radius diambil dari skala kecil, lalu dipakai sama untuk komponen yang sama:

Nilai px (root 16px) Dipakai untuk
0.25rem 4px badge "Sisa 2 kamar", tag
0.5rem 8px tombol, kolom input
0.75rem 12px kartu kamar
1rem 16px kartu besar, dialog
9999px setengah tinggi pill: tag bulat, tombol kecil

Aturannya: semua kartu 12px, semua tombol 8px. Tiga tombol dengan tiga radius berbeda terlihat seperti diambil dari tiga situs. Radius kecil terasa lebih resmi, radius besar lebih ramah; pilih satu kesan dan pakai di semua komponen.

Pill: 9999px, bukan 50%

Untuk tombol berbentuk pill (ujung kiri dan kanannya setengah lingkaran), tulis border-radius: 9999px. Angka sebesar itu gak membuat tombol aneh, karena CSS punya aturan: kalau jumlah dua radius di satu sisi lebih besar dari panjang sisinya, browser mengecilkan semua radius dengan faktor yang sama sampai muat. Tombol setinggi 48px dengan 9999px akhirnya memakai radius 24px, tepat setengah tingginya, di ukuran berapa pun.

border-radius: 50% berbeda: 50% dari lebar untuk arah mendatar, 50% dari tinggi untuk arah tegak. Di kotak persegi (foto profil Bu Sri 40 × 40px) hasilnya lingkaran. Di tombol 300 × 48px hasilnya elips, bukan pill.

Radius bersarang: luar = dalam + padding

Kalau ada kotak di dalam kotak, misalnya foto di dalam kartu, sudut keduanya harus melengkung dari titik pusat yang sama, seperti jalur lari. Rumusnya:

radius dalam = radius luar - padding

Kartu Kamar Teras punya radius 16px dan padding 8px, jadi fotonya 16 - 8 = 8px. Begitu juga container dengan radius 12px dan padding 8px: elemen di dalamnya 12 - 8 = 4px.

Ini jarak antara tepi kartu dan tepi foto, diukur di garis diagonal 45 derajat di sudutnya (padding 8px, radius kartu 16px):

Radius foto Jarak di sisi lurus Jarak di sudut
16px (sama dengan kartu) 8px 11,31px
8px (16 - 8) 8px 8px
0 (siku) 8px 4,69px

Jadi jawaban tebakannya: gak. Dengan radius 16px, jaraknya melebar jadi 11,31px di sudut, dan foto terlihat "mengambang". Dengan 8px, jaraknya 8px di mana-mana. Itu jawaban tebakannya.

Kalau padding-nya lebih besar dari radius luar, rumusnya jadi nol atau minus. Itu yang terjadi di latihan: kartu 12px dengan padding 24px. Tombol di dalamnya duduk jauh dari lengkungan kartu, jadi dia memakai radius dari skalanya sendiri, 0.5rem.

⚠️ Jebakan yang sering ketemu

TL;DR: Subtlety: beda kecil yang cukup, misalnya garis 1px solid #E5E7EB (1,24:1, dekorasi, gak wajib 3:1) dan shadow 0 1px 3px rgba(0, 0, 0, 0.1), bukan 3px solid #000. Ambil radius dari skala kecil dan pakai konsisten: badge 4px, tombol 0.5rem (8px), kartu 0.75rem (12px), kartu besar 16px. Pill = border-radius: 9999px, karena browser mengecilkan radius yang kebesaran sampai setengah tinggi; 50% cuma bulat di kotak persegi, di tombol lebar jadi elips. Radius bersarang: radius dalam = radius luar - padding, jadi 16px dengan padding 8px = 8px, dan 12px dengan padding 8px = 4px; dengan radius yang sama, jarak di sudut melebar jadi 11,31px. Kalau padding lebih besar dari radius luar, elemen dalam memakai radius dari skalanya sendiri.

Yang akan kamu pelajari