CSS前缀的目的是什么?

tot*_*dli 5 css browser css3 vendor-prefix

我知道如果我们想确保一些CSS3功能在任何地方都可以工作,我们需要使用W3C的前缀版本,如:

transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-webkit-transition: all 1s ease;
Run Code Online (Sandbox Code Playgroud)

我知道前缀用于实验性功能,但为什么它们是必要的?他们为什么不在原来的W3C上测试它们呢?每个CSS3功能是否为每个浏览器都有或者有一个前缀,或者如果他们认为应该创建一个带前缀的版本?

Bol*_*ock 6

供应商前缀的最初目的是让供应商能够添加他们自己的非标准功能,以便在他们的CSS实现中使用.然而,它们中的大多数用于最终成为标准的实验版本的东西.

如果实验属性没有前缀,则意味着它是属性的正确标准版本.如果每个浏览器以不同的方式呈现它,那么标准就不多了.相反,浏览器避免实现未加前缀的属性,直到它确定它是根据标准完成的,然后它开始支持无前缀属性,作为一种说法,它正确地支持这个特定的标准.

并非每个功能都有前缀; 实际上,供应商只有在认为有必要时才会创建前缀.

  • 此外,供应商*应该*在标准稳定时丢弃前缀(候选推荐).基于Webkit的浏览器是唯一一个顽固拒绝在许多新属性上删除前缀的浏览器(参见:http://caniuse.com/#search=gradient). (2认同)