CSS modern memberi Anda tiga satuan panjang umum untuk tipografi dan spasi — px, rem, dan em. Mereka mudah untuk diubah, namun memilih yang tepat memiliki konsekuensi nyata terhadap aksesibilitas dan pemeliharaan. Panduan ini menjelaskan perhitungannya, trade-offnya, dan kapan harus mencapai masing-masingnya.

Cara kerja konversi

Setiap konversi di sini adalah pembagian atau perkalian tunggal. rem diukur berdasarkan ukuran font root (elemen html), yang defaultnya adalah 16 piksel, jadi rem = px ÷ 16 dan px = rem × 16. Ubah akar dan pembaginya pun ikut berubah — alat ini memungkinkan Anda menetapkan basis apa pun. em bekerja dengan cara yang sama tetapi bertentangan dengan ukuran font elemen itu sendiri (atau induknya), bukan akarnya, jadi em = px induk. Hasil dibulatkan menjadi empat desimal dan angka nol di belakangnya dihilangkan, sehingga 24 piksel ditampilkan kembali sebagai 1.5rem yang bersih, bukan 1.5000rem.

Mengapa rem mengalahkan px untuk aksesibilitas

Satu-satunya alasan terbesar untuk memilih rem adalah menghormati pengaturan browser pengguna. Saat seseorang meningkatkan ukuran font defaultnya — umum bagi pengguna dengan gangguan penglihatan — setiap ukuran berbasis rem akan ikut meningkat. Ukuran font piksel yang keras mengabaikan preferensi tersebut sepenuhnya, sehingga teks tertahan pada ukuran yang Anda pilih. Menggunakan rem untuk ukuran font (dan sering kali untuk spasi) adalah salah satu keunggulan aksesibilitas termurah yang tersedia, dan itulah sebabnya sebagian besar sistem desain mengekspresikan skala tipenya dalam rem. Default 16px juga merupakan dasar yang masuk akal: cocok dengan default browser tempat dunia sadar WCAG dibangun.

Kapan menggunakannya, dan trik 62,5%.

Raih em bila Anda ingin suatu nilai diskalakan dengan komponen tertentu, bukan keseluruhan laman — padding di dalam tombol yang akan tumbuh bersama teks tombol, atau ukuran ikon yang sesuai dengan labelnya. Tangkapannya semakin rumit: buat sarang elemen berukuran em dan tumpukan pengali, yang mungkin akan mengejutkan Anda. Beberapa tim menetapkan html { font-size: 62.5% } sehingga 1rem = 10px dan perhitungan mental lebih mudah (1.6rem = 16px). Ini berfungsi, tetapi itu mengesampingkan ukuran dasar pengguna untuk konten pihak ketiga berbasis px dan menambahkan lapisan tipuan. Konverter menghilangkan alasan utama orang menggunakan trik tersebut — Anda dapat mempertahankan default 16 piksel yang dapat diakses dan membiarkan alat tersebut menangani aritmatika.