为了实现跨浏览器兼容性,我们倾向于使用特定于供应商的扩展和标准
CSS3语法.我知道
CSS3仍处于草案阶段,但我们已经开始使用它了.但问题是,它们发生的顺序是否非常重要?
例如,让我们看看这里
-moz-border-radius: 10px; border-radius: 10px;
这适用于浏览器特定的border-radius然后回退到标准方法,后者有望被忽略,但仍然.
同样,切换他们的订单
border-radius: 10px; -moz-border-radius: 10px;
现在,这首先尝试标准语法,然后回退到基于浏览器的扩展.
订购有什么不同吗?可能在性能方面还是其他方面.
解决方法
Now,this tries standard Syntax first and then falls back to browser based extension.
这可能是一种误导性陈述.兼容的浏览器将首先尝试标准的无前缀属性,但如果它还支持除标准之外的前缀属性,那么它也将应用该前缀.这通常会导致标准声明被前缀声明和浏览器对该属性的潜在非标准实现所覆盖,从而破坏了首先拥有标准属性的目的.
你应该最后声明无前缀属性的原因是因为这是属性在规则中级联的方式:浏览器将始终使用最后一个适用的属性.属性的前缀和未固定版本被视为与级联相同的属性,因此您希望浏览器在应用该属性时尽力遵守标准.
如果浏览器实现了前缀而不是标准,那很好,但如果它实现了两者,则要确保它使用标准.您可以通过最后声明标准属性来完成此操作.
1据我所知,这不是由规范决定的,因为就规范而言,供应商扩展是非标准的,因此无法描述它们的实现.虽然规范中描述了syntax of vendor prefixes,但实现完全取决于供应商的判断.
然而,这是大多数浏览器开发人员在实现待标准化属性或规则的前缀版本时达成的约定,以便始终将前缀和未加前缀版本视为彼此的别名.