【问题标题】:When/Why Do CSS Property Values Need to Specify "px"?CSS 属性值何时/为什么需要指定“px”?
【发布时间】:2021-07-11 21:50:10
【问题描述】:

我注意到 CSS 属性值有时默认使用“px”,即使没有指定。但是,对于其他属性,不指定单位是错误的。为什么是这样?一般来说,哪些属性需要“px”,哪些默认为“px”?

以下是每种属性的几个示例。我在 Ubuntu 上使用最新版本的 Firefox:

  • 默认为“px”:

    • 边距/填充
      • 还有margin-left、padding-right等。
    • 宽度/高度
  • 如果没有单元则忽略/出错:

    • padding-inline、margin-block 等。
      • 还有margin-block-start、padding-inline-end等。
    • 边界半径
      • 还有border-radius-top-left等

我注意到“忽略”列表较新。 width/height/padding/margin 和山一样古老,border-radius 有点新,padding/margin-inline/block 是全新的,甚至在我写这篇文章时还没有在 Edge 中。年龄和这个有关系吗?过去是否有某种属性值标准化,CSS 维护者不想为旧属性要求单位,因为这会破坏旧网站?

为什么有些 CSS 属性需要单位而有些默认为“px”?

【问题讨论】:

  • Defaults to "px": --> 你是如何验证它们默认为 px 的?
  • @TemaniAfif 我通过试用进行了验证。开发工具帮助很大。

标签: html css


【解决方案1】:

所有采用长度值的 CSS 属性都需要除 0 以外的值的单位(其中 px 是一个示例)。

这一直是 CSS 的规则,所以这与 CSS 规范的维护者无关。

为了向后兼容 1990 年代有缺陷的浏览器,当页面的 Doctype 触发 quirks mode 时,长度默认为 px 单位。这是浏览器开发人员有意模拟的错误。

我假设这个向后兼容规则不适用于那些在那些浏览器出现的日子里不存在的新属性。


始终使用触发标准模式的 Doctype。 Quirks 模式的不一致性比它们的价值更麻烦。始终为非零长度指定单位。

【讨论】:

  • 我同意怪癖模式比它的价值更麻烦。现在我知道了这个捷径,我很想只在这些情况下去掉“px”以节省打字,至少在家庭/测试项目中,尽管我可能不会。
  • 哇,我才意识到我实际上是 处于怪癖模式。这是一个测试回购,所以我只需要它看起来不错。不过,我应该多加注意。
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2020-08-10
  • 2013-03-13
  • 1970-01-01
相关资源
最近更新 更多