我在Safari和Chrome中遇到以下问题。字体大小和行高设置,但更改字体仍然会使元素的高度发生变化
body {
font-size: 15px;
line-height: 1.2;
}
body, .same-font {
font-family: Helvetica, sans-serif;
}
code {
font-family: Courier New, sans-serif;
}
<ul>
<li>Without any code - 18px height.</li>
<li>With <code>code</code> - 20px height.</li>
<li>With <code class="same-font">code.same-font</code> - 18px height.</li>
</ul>
运行上面代码段和所述检查器。您可以注意到,code
元素没有任何修改其font-size
或line-height
的东西,除了它继承的body
。
虽然它并不坚持继承,因为其包含的li
的高度为20px,不像其他人那样......我不确定该高度是从哪里来的,因为code
元素本身的高度的17px(这也是来历不明)。
将正常/正文应用于code
元素(如第三个列表项)时,它会像正常一样回到18px。对我而言,这意味着它不是用户代理对影响高度的code
元素施加的任何其他属性 - 仅限于font-family
。
编辑:作为参考,StackOverflow的样式中的某些东西可以防止此行为。下面的列表项都具有相同的高度:
- 一个
two
- 三
编辑2:显然不是。如果你改变自己的等宽字体为Courier New,然后选择相同问题会持续存在。
如何防止这种尺寸变化?即使该行中的字体不断更改,您如何指定将使用的行高?
一个示例用例是一个垂直节奏的设计 - 每行的高度和元素使用的总高度应该是18px的倍数(即,如果使用该网格大小) - 一条20px行将抛出节奏。
不同的字体有不同的**默认**'line-height'给他们,你不能为此做任何事情。你不能使所有'line-height'都等于' –
所以这些字体只是忽略了它们的一些样式?我们应该如何知道哪些字体遵守或忽略这些样式?多么奇怪......编辑:他们不完全忽略它们 - 如果我将它设置为30px的“行高”,那就行了。如果我将它设置为10px,那么它将是18px ...发生了什么? –
当你将样式应用于他们时,他们会遵循,他们不会忽视这一点。 –