为什么浏览器为CSS属性创build供应商前缀?

也许这是一个明显的答案,但是

为什么浏览器会决定为border-radius等创build自己的供应商前缀?

我的意思是:为什么我必须input:

 -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; 

是不是因为每个平台都认为“我们很酷,我们会想出一个更好的办法做圆angular?” 键入三行之一似乎是完全和莫名其妙的冗余。

这是因为这些特性是在规范达到最终发布阶段之前由供应商实现的。

供应商前缀确保不会与更改function等发生冲突

最初,供应商前缀的目的是让浏览器制造商开始支持实验性的CSS声明。

假设W3C工作组正在讨论一个网格声明(顺便说一下,这不是一个坏主意)。 我们还要说有些人制定了一个规范草案,但其他人不同意一些细节。 我们知道,这个过程可能需要很长时间。

我们还要说,微软作为一个实验决定实施提议的网格。 在这个时候,微软不能确定该规范是不会改变的。 因此,不添加网格到它的CSS,它增加了-ms-grid。

供应商前缀types表示“这是Microsoft正在进行的提议的微软解释”。因此,如果网格的最终定义不同,Microsoft可以添加新的CSS属性网格,而不会中断依赖于-ms-grid

来源 。

更新截至2016年

正如本文3年,重要的是要提到,现在大多数供应商明白,这些前缀只是创造不必要的重复代码,并且你需要指定3个不同的CSS规则来获得一个效果在所有浏览器中工作的情况是不需要的。

如本词汇表中提到的关于May 3, 2016May 3, 2016 Mozilla对Vendor Prefix的看法,

浏览器供应商现在正试图摆脱供应商前缀的实验function。 他们注意到Web开发人员在生产网站上使用它们,污染了全球空间,并使得劣势更加困难。

例如,就在几年前,为了在一个盒子上设置一个圆angular,你必须写:

 -moz-border-radius: 10px 5px; -webkit-border-top-left-radius: 10px; -webkit-border-top-right-radius: 5px; -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 5px; border-radius: 10px 5px; 

但现在浏览器已经完全支持这个function,你真的只需要标准化的版本:

 border-radius: 10px 5px;