【问题标题】:Why exactly are browser prefixes necessary, from the browser creator's point of view从浏览器创建者的角度来看,为什么需要浏览器前缀
【发布时间】:2016-02-01 18:36:48
【问题描述】:

有很多工具可以解决浏览器前缀问题,无论是针对麻烦属性的 IDE 自动扩展,还是使用预编译器制作 mixin,但为什么浏览器制造商需要实现前缀。据我所知,他们可以实现自己的某些东西的实现,但是是什么阻止了他们在没有前缀的情况下这样做。如今,尤其是几乎所有浏览器都试图遵循 W3 规范,所以我怀疑 Safari 是否会在元素内部绘制彩虹,比如 box-shadow。

离开他们的“解决方案”不是更好吗,尽管可能有点错误或缺乏功能,没有前缀,所以当他们真正推出符合所有标准的工作版本时,使用这种 JavaScript 属性样式编写的网站可以运行如预期?我真的不明白每个人如何认为实施它们是个好主意。

【问题讨论】:

  • 当浏览器供应商有一个想法并想要在它成为 WHATG/W3 规范之前实现它时,会使用前缀特性。
  • 所以盒子大小是由 Chrome 和 Firefox 实现的,然后才成为规范的一部分?如果它甚至没有在其他浏览器中实现,那么“命名空间”属性的意义何在,因此实际上不会对它们产生任何影响。
  • 虽然这只是一个想法,但它会在其他浏览器中以不同方式实现。而且您不希望它在使用时对它们产生任何影响。

标签: javascript css google-chrome browser


【解决方案1】:

这个想法是,想要本地“尝试”这些实验性功能的作者可以使用已发布浏览器上的前缀属性来实现,而不必处理夜间构建甚至下载和编译手动获取源代码,因为不带前缀的发布错误行为类似于以生产质量发布测试版软件。

供应商没有看到的是作者会采用前缀属性,将它们放在生产站点上,并鼓励其他作者也这样做。结果,前缀像野火一样蔓延到供应商太害怕在按原计划交付稳定的、无前缀的实现后删除前缀来破坏站点的地步。我的意思是,看看what happened when Mozilla dropped support for -moz-opacity,一个前缀属性,与今天的-webkit- 属性相比,使用相对较少,不到4 年前。从角度来看,-moz-opacity 在 Firefox 0.9 中没有前缀,差不多 12 年前

这个前缀惨败的另一个不幸结果? Opera、Microsoft,最后是 Mozilla,都勉强改变了他们的 CSS 实现以识别 -webkit- 前缀,因为 WebKit 正在进入几乎所有移动设备和每个利基浏览器,并且作者认为 WebKit 是一个真正的布局Engine™,因此他们为 WebKit 编写代码而没有别的。显然,我们还没有从 IE/Netscape 浏览器大战中吸取教训。

这就是为什么供应商同意在未来不再使用前缀来实现即将推出的标准的实验性实施。新的 CSS 功能将不带前缀发布,但默认情况下不可用。例如,Firefox 将这些功能隐藏在特殊的 about:config 选项后面,并在以后默认打开它们,而 Chrome 以类似的方式将它们隐藏在 about:flags 中。

【讨论】:

  • 所以,就像 IT 中的大多数事情一样,它是意外开始的?哈。感谢您的完整回答。
猜你喜欢
  • 1970-01-01
  • 2014-11-30
  • 2011-02-23
  • 1970-01-01
  • 2013-12-30
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多