Bei Verwendung einer Schriftart mit fester Breite möchte ich die Breite eines HTML-Elements in Zeichen angeben .
Die "em" -Einheit soll die Breite des M-Zeichens sein, daher sollte ich sie verwenden können, um eine Breite anzugeben. Dies ist ein Beispiel:
<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>
Das Ergebnis ist nicht das, was ich wollte, da die Browserzeile nach Spalte 15 und nicht nach 10 unterbrochen wird:
1 3 5 7 9 1 3 5
7 9 1
(Ergebnis in Firefox und Chromium, beide in Ubuntu.)
Der Artikel von Wikipedia besagt, dass ein "em" nicht immer die Breite eines M hat, daher sieht es definitiv so aus, als ob der "em" -Einheit dafür nicht vertraut werden kann.
Antworten:
1em ist die Höhe eines M und nicht die Breite. Gleiches gilt zum Beispiel für die Höhe eines x. Im Allgemeinen sind dies die Höhen von Groß- und Kleinbuchstaben.
Breite ist ein ganz anderes Thema ....
Ändern Sie Ihr Beispiel oben in
und Sie werden feststellen, dass Breite und Höhe der Spannweite unterschiedlich sind. Bei einer Schriftgröße von 20 Pixel in Chrome beträgt die Spanne 12 x 22 Pixel, wobei 20 Pixel die Höhe der Schrift und 2 Pixel die Zeilenhöhe sind.
Da em und ex hier keinen Nutzen haben, wäre eine mögliche Strategie für eine reine CSS-Lösung:
Ich habe es jedoch nicht geschafft, dies zu codieren. Ich bezweifle auch, dass es wirklich möglich ist.
Die gleiche Logik könnte jedoch in Javascript implementiert werden. Ich verwende hier allgegenwärtiges jQuery:
Die +1 in (w * 10 + 1) dient zur Behandlung von Rundungsproblemen.
quelle
ch
EinheitDas Gerät, das Sie suchen, ist
ch
. Laut den MDN-Dokumenten :Es wird in aktuellen Versionen der gängigen Browser ( caniuse ) unterstützt.
Beispiel
quelle
 
oder in HTML eingegeben werden 
. Es entspricht funktionalch
der CSS-Einheit, wird zwar nicht allgemein unterstützt, kann jedoch als Problemumgehung in HTML verwendet werden (hässlicher Hack, sollte aber funktionieren).