前几天,我正在研究浏览器(我使用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*/;
}
这件事发生在我身上,我觉得这很奇怪。
答案 0 :(得分:7)
有些浏览器使用这样的CSS规则,因为它们的规范还没有由W3C最终确定,因此如果他们不关闭前缀,他们将面临最终W3C标准格式略有不同的风险,并创建浏览器之间或同一浏览器版本之间的不兼容性,因为它们将格式更改为标准的处理方式。
对于具有多个参数的规则,这是一个特殊问题 - 可能出错的主要问题是标准最终会以不同的顺序生成参数:
border-radius: 3px 3px 6px 6px;
box-shadow: 3px 3px 6px #fff;
...等...
添加前缀是他们的保证,如果最终的标准与其实现不同,那么什么都不会破坏。
至于关于margin-before
而不是margin-left
的部分,这似乎是因为-webkit-margin-before
规则不等同于margin-left
,而是{{1}这是一个旨在使事物在RTL和垂直书写模式下工作的最新提案。看到这个页面:http://lists.w3.org/Archives/Public/www-style/2010Sep/0625.html但它似乎相当模糊。
答案 1 :(得分:1)
帮助开发人员查看哪些元素是浏览器默认值。