- Di banyak aplikasi perusahaan, elemen UI seperti teks dan ikon tidak benar-benar disejajarkan di tengah
- Padahal, dengan menggunakan
flexdangriddi CSS, penengahan bisa dilakukan dengan mudah
display: flex
justify-content: center /* pemusatan horizontal */
align-items: center /* pemusatan vertikal */
atau
display: grid
justify-items: center /* pemusatan horizontal */
align-items: center /* pemusatan vertikal */
Faktor-faktor yang membuat penengahan jadi sulit
- Metrik font berperan penting. Sebagian besar font populer tidak memiliki bounding box yang pas dan memiliki ruang kosong, sehingga sulit untuk benar-benar menempatkannya di tengah
- Pengaturan
line-heightmembuat hampir mustahil menyelaraskan dua elemen yang berada di kontainer berbeda - Menyelaraskan ikon di sebelah teks juga sangat sulit. Properti CSS
vertical-aligntidak dapat menyelaraskan ikon secara bermakna - Icon font yang dimasukkan ke dalam file font makin menyulitkan penyelarasan karena ukuran dan padding-nya tidak bisa diatur
- Desainer juga sering melakukan kesalahan dengan menengahkan secara mekanis tanpa mempertimbangkan bentuk ikon
- Penyelarasan horizontal pun bisa meleset jika tidak dilakukan dengan sangat cermat
Solusi
Desainer
- Jika bounding box font disesuaikan pas dengan teks, penengahan akan jauh lebih mudah
- Figma mendukung fitur ini (bukan pengaturan bawaan)
- Vertical Trim : Cap Height to baseline
Desainer font
- Jika metrik font diatur agar ruang antara ascender dan descender menjadi 2 kali cap-height, pengembang dapat melakukan penengahan dengan lebih mudah
- Ascender/descender yang sebenarnya tidak perlu diperpanjang sampai ke batas; cukup angka metriknya saja yang disesuaikan
Pengembang web
- Harus mengetahui font yang akan digunakan sejak awal (tidak akan berfungsi jika terjadi font fallback)
- Pemusatan vertikal dapat disesuaikan dengan menambahkan nilai
padding-bottomyang dihitung dari metrik font - Ikon juga bisa disejajarkan dengan menetapkan
vertical-align: baselinelalu menggesernya ke bawah sebesar nilai yang dihitung dari metrik font dan ukuran ikon
Icon font
- Tolong berhenti menggunakan icon font dan gunakan format gambar biasa
- Tidak ada yang lebih mudah daripada menyelaraskan dua persegi panjang yang memiliki lebar dan tinggi
Koreksi visual
- Pengembang hanya bisa menyelaraskan persegi panjang yang secara matematis sempurna. Untuk hal yang memerlukan koreksi manual, ikon harus ditempatkan secara visual agar tampak seimbang di dalam persegi panjang
Pendapat GN⁺
- Ini menunjukkan bahwa perhatian pada detail kecil dapat sangat meningkatkan kualitas UI. Hanya dengan penengahan elemen yang tampak sepele pun, kesan keseluruhan bisa berubah
- Ini menyiratkan bahwa hasil yang baik tidak datang dari pola pikir "desainer cukup fokus pada desain, pengembang cukup fokus pada implementasi", melainkan dari saling memahami area kerja masing-masing dan berkolaborasi
- Akan lebih baik jika sejak tahap desain, metrik font sudah disesuaikan dan mockup dikerjakan agar mudah diwujudkan sesuai niat desainer, tanpa perbedaan rendering antar-browser
- Masalah seperti ini bahkan ditemukan pada produk perusahaan besar seperti Apple, Microsoft, dan Google, tetapi kebanyakan orang tampaknya tidak cukup peduli untuk menyadarinya. Justru karena itu, penting untuk membuat produk dengan obsesi pada detail yang teliti
- Terutama belakangan ini, saat alat otomatisasi pengujian UI makin sering digunakan dan proses pemeriksaan satu per satu dengan mata manusia cenderung dihilangkan, masalah seperti ini bisa makin sering terjadi sehingga perlu diwaspadai
3 komentar
Saya rasa ada baiknya juga memikirkan apakah perataan tengah yang mekanis itu benar-benar bagus. Seperti mouse yang terasa nyaman karena bentuk ergonomisnya sedikit berbeda di kiri dan kanan, ini juga tampaknya merupakan hal yang perlu diputuskan dengan melihat kegunaan secara keseluruhan.
Intinya tampaknya adalah hasilnya bisa berbeda dari yang dimaksud. Misalnya, situasi seperti klik mouse terjadi pada bagian ekor, bukan pada ujung panah yang terlihat di layar.
Opini Hacker News
Ringkasan:
justifydanaligndi CSS secara interaktif