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

为什么浏览器为CSS属性创建供应商前缀?,css,vendor-prefix,Css,Vendor Prefix,也许这是一个显而易见的答案,但是 浏览器究竟为什么决定为边界半径等创建自己的供应商前缀? 我的意思是:为什么我必须键入: -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; 是不是因为每个平台都认为“我们很酷,我们会想出一个更好的方法来做圆角?”一行输入三行似乎完全是多余的,令人费解 这是因为这些特性是在规范到达最终发布阶段之前由供应商实现的 供应商前缀确保与更改功能等没有冲突 最初,厂商前缀的

也许这是一个显而易见的答案,但是

浏览器究竟为什么决定为
边界半径等创建自己的供应商前缀?

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

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

是不是因为每个平台都认为“我们很酷,我们会想出一个更好的方法来做圆角?”一行输入三行似乎完全是多余的,令人费解

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

供应商前缀确保与更改功能等没有冲突

最初,厂商前缀的作用是允许浏览器制造商使用 开始支持实验性CSS声明

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

让我们进一步说微软作为一个实验决定 实施建议的网格。此时此刻,微软无法做到 确保规格不会改变。因此, 为了将网格添加到CSS中,它添加了-ms-grid

供应商前缀表示“这是微软的解释 因此,如果网格的最终定义是 不同的是,微软可以添加一个新的CSS属性网格而无需中断 依赖于-ms网格的页面


.

正如这篇文章所述,需要指出的是,现在大多数供应商都明白,这些前缀只是在创建不必要的重复代码,而您需要指定3种不同的CSS规则才能在所有浏览器中都能发挥作用的情况是不必要的

正如2016年5月3日关于Mozilla对供应商前缀的看法中所述

浏览器供应商现在正试图摆脱供应商前缀,以便进行实验 特征。他们注意到Web开发人员正在使用它们 制作网站,污染全球空间,使其更加 弱者很难表现好

例如,就在几年前,要在方框上设置圆角,你必须写:

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

同意。新的想法需要一段时间才能在互联网世界中得到认可,因此你最终可以拥有各种有趣的特性。有些想法从未得到认可,而另一些想法只有少数几个供应商实施。我还想补充一点,虽然一些CSS规范现在已经完成,但我们仍然将它们用于较旧的浏览器支持。“是不是因为每个平台都认为‘我们很酷,我们会想出一种更好的方法来实现圆角?’准确地说,对供应商前缀的需求并没有真正改变,因为W3C发布CR规范的速度仍然没有比以往任何时候都快。除此之外,您的示例并没有真正说明与报价中的声明相关的任何内容:您现在只需要为给定属性编写标准属性,而不是它+前缀属性,这并不是因为浏览器供应商“不再使用前缀”,而是因为W3C对属性进行了标准化。在几乎所有情况下,如果浏览器支持前缀,那么它也已经具有标准属性。