2011-11-15 43 views
56

也许这是一个明显的答案,但为什么浏览器为CSS属性创建供应商前缀?

为什么地球将浏览器决定创建自己的供应商前缀为border-radius之类的?

我的意思是:为什么我必须键入:

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

是因为每个平台认为“我们是冷静,我们会拿出一个更好的方式做圆角? “对于一个类型来说,看起来完全和不可思议地是多余的。

+11

“是否因为每个平台都认为'我们很酷,我们会想出一个更好的方法来做圆角?'”正确地说。 – BoltClock

回答

50

这是因为这些功能是在规格达到最终发布阶段之前由供应商实施的。

的供应商前缀确保有不断变化的功能等没有发生冲突

本来,供应商前缀的点是为了让浏览器厂商 开始支持CSS试验的声明。

让我们假设一个W3C工作组正在讨论一个网格声明(其中, 顺便说一句,这不会是一个坏主意)。让我们进一步说, 一些人创建了草稿规范,但其他人不同意 的一些细节。我们知道,这个过程可能需要很长时间。

让我们进一步说,微软作为一个实验决定 实现建议的网格。在这个时候,微软不能确定该规范不会改变。因此,添加网格到其CSS,而不是 ,它添加了-ms-grid。

厂商前缀样的说:“这是微软解释 正在进行的提议。”因此,如果电网的最终定义是 不同,微软可以添加新的CSS属性网格没有打破依赖 页-ms-grid

Source

+0

同意。新的想法需要一段时间才能在互联网世界中得到批准,所以你可以得到各种有趣的属性。一些想法从未被批准,而另一些只是由少数供应商实施。 – user978122

+1

也想补充一点,虽然现在已经完成了一些CSS规范,但我们仍然将它们用于较旧的浏览器支持。 – Th3Alchemist

10

UPDATE AS 2016年

由于这个职位3岁,它一提的是,现在大部分厂商都明白,这些前缀都只是创造非必要的重复代码和情况下,你很重要需要指定3个不同的css规则才能在所有浏览器中使用一种效果,这是不需要的。现在

正如this glossary提及Mozilla的上Vendor PrefixMay 3, 2016观点,

浏览器厂商都在试图摆脱对实验 功能的供应商前缀。他们注意到网络开发人员在生产网站上使用它们,污染了全球空间,并且使得它更难以在劣势中表现良好。

例如,仅仅在几年前,设置一个箱子圆角,你必须写:

-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; 

但现在浏览器已经开始全面支持此功能,你真的只需要标准化版本:

border-radius: 10px 5px; 
相关问题