【问题标题】:Font size discrepancy between computed font size and CSS defined font size?计算的字体大小和 CSS 定义的字体大小之间的字体大小差异?
【发布时间】:2015-03-17 09:32:07
【问题描述】:

我有一个特定的 HTML 元素:一个带有一些 CSS 的文本区域

<textarea id="mytextarea" 
    class="absoluteelement inputtable paddable"
    style="resize:none;top:70.68187%;left:4.705374%;width:90%;height:11.5%;Background-color:transparent;">
</textarea>

还有css:

#mytextarea {
    font-size: 10.0px;
    font-color: #FF000000;
    font-family: arial;
    text-align: left;
}

input,select,textarea {
    border: none;
    background: transparent;
}

.paddable {
    padding-left: 5px;
    padding-right: 5px;
    box-sizing: border-box;
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box; /*FF, IE8*/
}

textarea {
    resize: none;
    overflow:hidden;
}

.absoluteelement {
    position: absolute;
}

现在我的问题是这个。当我尝试

var textarea = document.getElementById("mytextarea");
var style = window.getComputedStyle(textarea);
console.log(style.fontSize);

控制台记录9.85012722015381px。然而,当我使用 Chrome 的开发人员面板(样式选项卡)检查 textarea 时,它会显示

#mytextarea {
    font-size: 10.0px;
    font-color: #FF000000;
    font-family: arial;
    text-align: left;
}

在计算面板中,它会像控制台输出一样显示:

> font-size: 9.85012722015381px;

为什么这两个值之间存在差异?我明确指出字体大小是 10.0px,在我的 css 中的任何地方都找不到数字 9.85...px。

更新:

这似乎只发生在 Chrome 中; Firefox 显示并记录计算出的字体大小为 10.0px

更新 2:

在 Chrome 上放大或缩小时,fontSize 似乎发生了变化。

【问题讨论】:

  • 是所有代码,我在 jsbin 上的 firefox 中遇到错误。如果字体大小是 10px 而不是 10.0px,它会改变吗?
  • 不可复制。问题中的确切代码在组合成 HTML 文档时会导致 Chrome 39.0.2171.99(Win 7)上的控制台消息“10px”。
  • @JukkaK.Korpela 我刚刚看到放大和缩小时字体大小发生了变化。确实发生在 Chrome 中,而不是 FF
  • 是的,对于某些缩放系数,fontSize 值似乎与 10px 有所不同。这可能只是在浏览器中实现缩放的一个特性。

标签: html css font-size


【解决方案1】:

据我所知,这确实是 Chrome 特有的问题。

首先,如果你以像素为单位设置字体大小,你应该只使用整数,即font-size: 10px;而不是font-size: 10.0px;,浮点数对于像素没有意义,只能关闭浏览器。

但是,您不必担心,因为您提供的所有数字实际上都映射到 10 像素字体大小。如果您需要识别代码中的实际字体大小以便对其进行处理,您可以将数字四舍五入:

var myTextArea = document.getElementById("mytextarea");
var fontSize = window.getComputedStyle(myTextArea).fontSize.replace("px","");
var fontSize = Math.round(fontSize);

【讨论】:

  • 10.0px 和 10.5px 对于font-size 是完全有效且有意义的值。浏览器是否舍入或错误计算是另一个问题。
  • 您能否解释一下 9.85px 字体大小的含义或提供解释的链接?
  • 如果我创建两个 div,字体大小分别为 10px 和 9.85px,文本相同,div 宽度不同。
  • @AlexanderDayan,除了一般的font-size属性和一般的px单位的含义外,没有什么要定义的。这些是困难的概念,但使用非整数数值并不会使它变得更加困难。
  • Math.round 用于DOM 元素不会返回数字。
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 2013-02-22
  • 2014-12-06
  • 2019-11-13
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多