Saat menggunakan font dengan lebar tetap , saya ingin menentukan lebar elemen HTML dalam karakter .
Unit "em" seharusnya adalah lebar karakter M, jadi saya harus bisa menggunakannya untuk menentukan lebar. Ini contohnya:
<html>
<head>
<style>
div {
font-family: Courier;
width: 10em;
}
</style>
</head>
<body>
<div>
1 3 5 7 9 1 3 5 7 9 1
</div>
</body>
</html>
Hasilnya bukan yang saya inginkan karena baris browser jeda setelah kolom 15, bukan 10:
1 3 5 7 9 1 3 5
7 9 1
(Menghasilkan Firefox dan Chromium, keduanya di Ubuntu.)
Artikel Wikipedia mengatakan bahwa "em" tidak selalu memiliki lebar M, jadi pasti terlihat seperti unit "em" tidak dapat dipercaya untuk ini.
Jawaban:
1em adalah tinggi sebuah M, bukan lebarnya. Hal yang sama berlaku untuk ex, yaitu tinggi dari sebuah x. Secara umum, ini adalah tinggi dari huruf besar dan huruf kecil.
Lebar adalah masalah yang sama sekali berbeda ....
Ubah contoh Anda di atas menjadi
dan Anda akan melihat lebar dan tinggi bentang yang berbeda. Untuk ukuran font 20px di Chrome, bentangnya adalah 12x22 px, di mana 20px adalah tinggi font, dan 2px untuk tinggi baris.
Sekarang karena em dan ex tidak berguna di sini, strategi yang mungkin untuk solusi khusus CSS adalah dengan
Namun saya tidak berhasil membuat kode ini. Saya juga ragu apakah itu benar-benar mungkin.
Namun logika yang sama dapat diimplementasikan dalam Javascript. Saya menggunakan jQuery di mana-mana di sini:
+1 in (w * 10 + 1) digunakan untuk menangani masalah pembulatan.
sumber
ch
satuanUnit yang Anda cari adalah
ch
. Menurut dokumen MDN :Ini didukung dalam versi terbaru dari browser utama ( caniuse ).
Contoh
sumber
 
atau 
. Ini secara fungsional setara denganch
unit CSS, tetapi meskipun itu tidak didukung secara luas, ini dapat digunakan sebagai solusi dalam HTML (peretasan jelek, tetapi seharusnya berfungsi).