为什么浏览器';用户代理样式表是否使用带前缀的CSS属性?

为什么浏览器';用户代理样式表是否使用带前缀的CSS属性?,css,browser,Css,Browser,前几天,我在研究浏览器(我使用了chrome,但我猜它适用于所有浏览器)如何使用用户代理样式表来格式化HTML元素 使用blockquote时,我发现: blockquote { -webkit-margin-before: 1em; -webkit-margin-after: 1em; -webkit-margin-start: 40px; -webkit-margin-end: 40px; } 看起来不错。但是为什么他们不能用更像这样的东西呢 blockquote { margi

前几天,我在研究浏览器(我使用了chrome,但我猜它适用于所有浏览器)如何使用用户代理样式表来格式化HTML元素

使用
blockquote
时,我发现:

blockquote {
 -webkit-margin-before: 1em;
 -webkit-margin-after: 1em;
 -webkit-margin-start: 40px;
 -webkit-margin-end: 40px;
}
看起来不错。但是为什么他们不能用更像这样的东西呢

blockquote {
 margin-left:/*whatever*/;
 margin-top:/*whatever*/;
 margin-right:/*whatever*/;
 margin-bottom:/*whatever*/;
}

这发生在我身上,我觉得很奇怪。

帮助开发人员了解哪些元素是浏览器的默认值。

一些浏览器使用类似的CSS规则,因为它们的规范还没有被W3C最终确定,因此如果他们不使用前缀,他们将面临最终的W3C标准格式略有不同的风险,并在将格式更改为标准方式时,在浏览器之间或同一浏览器的版本之间创建不兼容

对于具有多个参数的规则来说,这是一个特殊的问题-可能出错的主要问题是标准最终会以不同的顺序使用参数:

border-radius: 3px 3px 6px 6px;
box-shadow: 3px 3px 6px #fff;
……等等

添加前缀是他们的保证,如果最终的标准与他们的实现不同,就不会有任何问题


至于关于
margin before
而不是
margin left
的部分,这似乎是因为
-webkit-margin before
规则不是
margin left
,而是
margin:before
规则的等价物,后者是最近一项旨在使事情在RTL和垂直书写模式下运行的提议。请看这一页:它似乎相当模糊。

因为他们可以?我也一直在想这件事,并认为这和盒子模型的古怪有关。很想知道你会得到什么答案。因为它们是用户代理样式表(正如你强调的那样)?但这并不能解释为什么它们使用与“普通”样式表完全不同的CSS属性。这不是
-webkit margin left
,而是
-webkit margin before
。编辑,尽管我不认为这是问题的关键。问题的标题明确询问了“前缀”CSS属性。目前,这些属性只是WebKit(urgh)的专有属性,在添加到规范之前,不应被视为官方属性或得到工作组的认可。供应商前缀不仅仅用于官方属性的实验版本;供应商也使用它们来创建自己的属性世界,供自己使用或出于各种原因使用,其中一些可能最终会或可能不会作为规范的补充建议进行推广。作为另一个非WebKit示例,Mozilla使用了大量前缀选择器、属性和值来破解某些怪癖。