Die Höhe eines line box ist nicht durch font-size
bestimmt. Oder nicht direkt, zumindest.
Sie können die detailed rules in der Spezifikation sehen.Wenn eine Linienbox nur nicht ersetzte Inline-Boxen mit denselben line-height
und vertical-align
enthält, sagen diese Regeln, dass die Höhe der Linienbox durch die line-height
der Inline-Boxen angegeben wird.
Dies trifft auf Ihren Fall zu, da Text, der direkt in einem Blockcontainerelement enthalten ist, in anonymous inline box eingeschlossen ist.
Wenn Sie line-height
einen expliziten Wert nicht setzen, wird die Höhe der Zeilen-Box durch den Anfangswert von line-height
gegeben werden, normal
, die wie folgt verhält:
Weisen Benutzeragenten festlegen der verwendete Wert zu einem "vernünftigen" Wert basiert auf der Schriftart des Elements. Der Wert hat die gleiche Bedeutung wie <number>. Wir empfehlen einen gebrauchten Wert für 'normal' zwischen 1.0 bis 1.2. Die computed value ist "normal".
Wenn beispielsweise der Browser 1.15
wählt, wird 1em
1/1.15 = 0.8696
der Höhe der Linie abzudecken. Das ist so nah an der 7/8 = 0.8750
, die Sie beobachtet haben.
Beachten Sie, dass anonyme Inline-Boxen vererbbare Eigenschaften wie line-height
von der übergeordneten Box übernehmen. Dann können Sie die line-height
des Blocks auf eine explizite Länge und die Höhe auf diese Länge multipliziert mit der Anzahl der Zeilen festlegen.
div {
line-height: 1.2em;
height: calc(1.2em * 8);
background: red;
}
<div>One<br/>Two<br/>Three<br/>Four<br/>Five<br/>Six<br/>Seven<br/>Eight</div>
Ihre Zeilenhöhe ist standardmäßig wahrscheinlich mehr als 1, versuchen Sie, line-height zu setzen: 1em –
Die einzige Sache, die ich den Antworten unten hinzufügen würde, ist einen unitless Wert für 'line-height' zu verwenden. Mit anderen Worten, anstelle von 'line-height: 1em' verwende einfach' line-height: 1'. Für die Argumentation siehe [** hier **] (https://developer.mozilla.org/en-US/docs/Web/CSS/line-height#Prefer_unitless_numbers_for_line-height_values). –