1

我最近一直在检查css3 命令为什么它们中的一些在每个浏览器中都不同?

例如,看一下这个 2D 变换示例

div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Safari and Chrome */
-o-transform: rotate(30deg); /* Opera */
-moz-transform: rotate(30deg); /* Firefox */
} 

如果他们都接受相同的论点,为什么他们会让他们变得不同?他们是否处于某种测试阶段?它们会永远相同(在测试阶段之后)吗?

如果您考虑这个动画示例,这是非常不切实际的

@keyframes myfirst
{
from {background: red;}
to {background: yellow;}
}

@-moz-keyframes myfirst /* Firefox */
{
from {background: red;}
to {background: yellow;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
from {background: red;}
to {background: yellow;}
}

@-o-keyframes myfirst /* Opera */
{
from {background: red;}
to {background: yellow;}
} 
4

2 回答 2

1

事实上,它们并不总是接受相同的参数或行为方式相同。

也就是说,为什么要加上前缀,直到有某种标准或共同的理解这个属性应该如何表现以及它的语法应该如何。

其中一些属性只是实验性的。浏览器供应商有一个很酷的新想法并将其添加到其浏览器中。一段时间后,其他浏览器供应商可能会采用它,但再过一段时间,就会有此功能的标准。

大多数时候,在某些浏览器版本之后,这些前缀都会被删除,因此您可以使用标准前缀。例如:一开始有一个前缀andborder-radius-moz--webkit-但在属性定义稳定后,前缀被删除了,现在你可以使用无前缀的版本。

于 2013-03-01T10:01:09.793 回答
1

要回答这个问题 - 是的,它们通常表示 beta 实现。一旦特定属性被标准化并且浏览器供应商添加了 ant 无前缀版本,他们通常会将前缀版本保留为别名并在以后弃用它。另外,是的,一旦标准化,行为应该是相同的(除非有意外的错误!)

CSS 供应商特定的扩展是规范的一部分。浏览器供应商使用它们向他们的浏览器添加未经批准或非标准化的 CSS 功能。理解是每个浏览器中的功能很可能不同,并且当无前缀规则标准化时,它可能不是最终功能。

CSS 供应商前缀不太受欢迎,尽管有一些有用的方法可以以更简洁的方式处理它们,避免您强调的问题。

于 2013-03-01T10:05:16.857 回答