5

翻译:即将到来的CSS私有前缀灾难

 3 years ago
source link: https://www.zhangxinxu.com/wordpress/2012/02/%e7%bf%bb%e8%af%91%ef%bc%9a%e5%8d%b3%e5%b0%86%e5%88%b0%e6%9d%a5%e7%9a%84css%e7%a7%81%e6%9c%89%e5%89%8d%e7%bc%80%e7%81%be%e9%9a%be/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

翻译:即将到来的CSS私有前缀灾难

这篇文章发布于 2012年02月20日,星期一,18:05,归类于 外文翻译。 阅读 52569 次, 今日 169 次 17 条评论

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=2223

CSS工作组(CSS Working Group)联合主席Daniel Glazmang告知大家非WebKit的浏览器厂商正在考虑支持-webkit-前缀CSS属性。

一石激起千层浪,于是业内展开了激烈的官方讨论。这里,翻译篇相关文章,希望米娜桑对该讨论有所了解,并发表自己的一些观点。

以下为翻译全文

对于CSS的私有前缀,开发者可谓爱恨交加。他们可以让我们在花费大量冗余代码的基础上使用一些前言技术。

background-image: -webkit-linear-gradient(#fff, #000);
background-image: -moz-linear-gradient(#fff, #000);
background-image: -ms-linear-gradient(#fff, #000);
background-image: -o-linear-gradient(#fff, #000);
background-image: linear-gradient(#fff, #000);

上面代码理论上可行,但是考虑到实际……

  1. 实验性质的属性往往都是先拿webkit引擎作小白鼠,没人能保证他们会复制在其他浏览器上。
  2. 通常很难界定私有前缀是否属于CSS规范的一部分。一些浏览器生产商提交的属性并不标准。
  3. 即使变成了标准属性,其不准确的私有前缀版本依旧支持。你的老代码依旧可以工作;你不会重新改正。

你会经常看到一些站点只使用-webkit-, 即使其他浏览器已经对该属性无前缀写法有了广泛的支持(例如border-radius)。因此,Chrome和Safari比竞争对手的浏览器看起来更好——其他厂商不乐意看到。

该问题已经在2012/2/7 W3C会议上提出并讨论。

Web标准积极分子正教人使用webkit. 你会看到所有的web标准倡导者,提倡人们使用WebKit的前缀。

我们的工作就是要解决互通性。

在这一点上,我们试图找出它和多少WebKit的前缀属性,真正在Mozilla实现了支持。

如果我们不支持WebKit的前缀,我们会把自己锁在移动网络部分的外面。

让我们花点功夫好好理解下。

无-webkit浏览器将支持-webkit前缀。这就是W3C想出来的解决之法。

这个想法可能是失败的。两个或两个以上相同的WebKit属性的实现将不兼容,因此开发人员将不能够在任何地方使用它。没有人最终胜利 – 包括苹果和谷歌。

但我更关心如果解决方案是成功的,它会造成不可挽回的损失。一旦开发者发现Firefox, IE和Opera都支持WebKit的前缀,他们会期望他们所有属性都起作用。 Webkit-only将成倍增加,供应商将被迫从头到尾应用这些前缀。在这一点上,WebKit的属性将成为既定事实上的标准而无视任何W3C规范。游戏结束:开发的web就此关闭。

其影响不只是CSS: 许多新的JavaScript API有私有前缀。

失败在于:

W3C工作组

web标准达到成熟时间过长。这可能是不可避免的,但浏览器厂商都绕过该过程。

浏览器生产商

匆忙推出个新技术,对于生产商,添加个前缀然后忘记它太容易了。Web开发者需要更多的信息:是否该属性被W3C认可,什么时候前缀可以去掉?

在一个理想的世界中,一旦浏览器实现了标准的属性,实验性质的前缀会消失。生产商不会如此做,因为这会破坏站点,但是他们可以突显问题。例如,为开发控制台提供过时的检测工具或输出错误消息。

苹果和谷歌

在推销webkit前缀上,两者都是有罪的,好像他们就是日常HTML5 web开发的标准部分。苹果已经被指控与W3C积极作对。

Mozilla, Microsoft和Opera

其他浏览器生产商通常滞后webkit数月——否则数年。添加WebKit的前缀是一个可笑的解决方案:是时候繁冗他们的游戏咯。

技术网站以及狂热分子

我们都喜欢很酷的实例,“传教士”们总是忽略属性是实验性质的,可能永远都不会所有浏览器都支持(恩,是的,包括SitePoint)。理想的情况下,代码应该至少在两个浏览器下生效,至少表明需要多个供应商的前缀。

web开发者

我们太懒惰。我们编写特定浏览器的代码,尽管我们可能心里想的是以后纠正,但我们很少做。

你还记得最后一次有针对性的开发特定的浏览器?这就是IE6. 十年后我们仍然和这个决定的遗产相伴。难道你真的希望历史重演?

是时候行动了

我反对非WebKit的浏览器支持WebKit的前缀。充其量,它使前缀无法使用。在最坏的情况下,它打破了整个标准化进程。无论你可以同意或不同意,姑且让同事知道你的意见,通过博客和社交网络上。 W3C和浏览器厂商将听取您的反馈,你只需要提供一些。

然后在多个浏览器测试您的网站。一点点优雅降级是好的,但忽视中的一个或多个现代浏览器而具有同等的支持是不可取的。修复代码,否则你的网站会对这个问题作出了贡献。

以上为翻译全文

译者语及其他补充观点

我个人态度也是不支持非webkit核心浏览器支持webkit属性。因为我想想都觉得麻烦。自己缺乏预见性而造成的问题需自己买单。

附上其他一些人的观点:

Remy Sharp: 这是个糟糕的想法,因为它影响开发商的预期,将有可能使我们使用前缀更加懒惰。

Christian Heilmann: 作为开发者,我们自己搞出来的混乱,应该由我们自己从中走出来内容)。

Aaron Gustafson乞求我们至少解决我们自己的东西并制作了个请愿书来对抗其他浏览器生产商支持-webkit-.

Eric Meyer则相当肯定我们不会赢得这场战争。

还有其他同行:Rachel AndrewBruce LawsonGilles Vandenoostende

国内不是不少公司已经加入W3C了吗,期望有相关同行可以现身说法。

(本篇完)1f44d.svg 是不是学到了很多?可以分享到微信
1f44a.svg 有话要说?点击这里


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK