7

我知道,如果我们想确保某些 CSS3 功能在任何地方都能正常工作,我们需要使用 W3C 推荐的前缀版本,例如:

transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-webkit-transition: all 1s ease;

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

4

3 回答 3

7

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

如果实验属性没有前缀,则意味着它是属性的正确标准版本。如果每个浏览器都以不同的方式呈现它,那么就没有多少标准了。取而代之的是,浏览器会避免实现无前缀属性,直到它确定它是根据标准完成的,然后它才开始支持无前缀属性,以此表示它正确地支持了这个特定的标准。

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

于 2013-02-11T12:14:36.350 回答
1

是的..可能将来我们不必为不同的浏览器使用这些前缀,但现在每个浏览器都有不同的 css 库,因此作为前端开发人员我们必须在 css 中使用这些前缀,否则某些浏览器将不会呈现我们的css。这就是他们的工作方式,我们已经跟随他们。

这是 Webkit 和 Firefox 前缀库的喜好

http://developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Gradients/Gradient.html

https://developer.mozilla.org/en-US/docs/CSS/CSS_Reference/Mozilla_Extensions

于 2013-02-11T12:44:31.567 回答
1

使用实验功能的人已经知道,根本不应该期望标准的跨浏览器行为。

在我看来,没有必要为新功能添加前缀。它使使用它们变得更加困难,因为您必须编写标准属性、chrome 的前缀属性、firefox、opera ......它还使样式表更大(谁将在将来删除所有这些前缀属性,当它们不需要时不再?)。

我没有看到任何优势,但这只是我的意见。

于 2013-02-11T12:35:56.170 回答