【问题标题】:Why don't browsers autocorrect incompatible CSS3 transitions?为什么浏览器不自动更正不兼容的 CSS3 过渡?
【发布时间】:2013-02-28 12:12:35
【问题描述】:

为什么浏览器不自动更正 CSS3 过渡? Safari/Chrome 和 Firefox CSS 转换之间的唯一区别是“moz”和“webkit”。当然,firefox 可以添加一个自动更正功能,将 css 中的每个“webkit”实例更改为“moz”,问题就会得到解决。或者还有什么?

【问题讨论】:

  • 因为它们是自定义 css 属性。开发,测试,不规范。任何两个浏览器都可以实现一个特定的功能,但使用完全不同的语义,例如-moz-opacity: 47%-opera-opacity: 0.47(作为虚构的例子)。跟踪其他所有人的虚构/非标准事物并尝试以相同的方式实施或支持它们不是浏览器的工作。
  • 因为它们明确命名这些东西,所以它们不会与其他浏览器冲突...

标签: css firefox browser webkit mozilla


【解决方案1】:

最后你想要的是根本不使用任何-* 前缀。为此,需要有一个由CSS 标准 定义的标准语法和行为。然后,无需使用不同的前缀多次重复 *-opacity: ...,您只需编写一次 opacity: ...,就像任何其他 CSS 声明一样。

供应商特定的前缀允许浏览器特定的行为,而不管当前的标准是什么。它允许供应商实施尚无标准的新功能,或在提交之前测试功能的实施。最终目标始终是按照标准定义的方式实现标准定义的所有功能;但你不会在一夜之间到达那里。新特性需要尽可能广泛地进行测试,以发现它们的实现问题或标准本身可能存在的问题。此测试通过供应商特定前缀提供功能来进行。

当您使用像 opacity 这样记录在案的标准功能时,可以肯定它在浏览器中始终如一地工作 (*cough*letsforgetabout*cough*IE*cough*forasecond*cough*)。使用供应商特定的前缀功能时,这意味着您使用的功能可能会发生变化和/或可能无法始终如一地工作(目前),风险由您自担。浏览器供应商之间不接触彼此的前缀是有原因的,他们朝着标准努力,最终使该功能无需前缀即可使用。

【讨论】:

    【解决方案2】:

    通常-moz-webkit 用于CSS 选择器是特定于浏览器引擎的属性。选择器可能不稳定,或者在每个浏览器中的行为都不同,因为它们会优化行为。

    他们不想“自动更正”到其他实现,因为其他浏览器对 CSS 属性的解释可能不同。在发生冲突时,它可能会导致关于哪些 CSS 属性应该“获胜”的问题。最后,这可能会增加每个浏览器的开发时间,因为他们需要弄清楚其他浏览器引擎在做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多