01|最荒唐的一幕,不是 -webkit- 到处都是

而是有一天,别的浏览器开始认真讨论:

“要不,我们也支持 -webkit- 吧。”

你第一次听到这句话,多半会愣一下。

因为前缀这东西,本来就是为了区分“这是我家还没定型的实验实现”。按道理说,-webkit- 应该只属于 WebKit 系,-moz- 属于 Mozilla,-o- 属于 Opera,-ms- 属于微软。

结果到了 2012 年,事情居然发展到:

非 WebKit 浏览器为了不显得自己“打不开现代网页”,开始考虑兼容 -webkit-

这已经不是技术折中了。

这是标准体系被现实倒着推。

你可以把第六篇理解成一场事故报告。它讲的不是“前缀为什么会存在”,第五篇已经说过了;它讲的是:

前缀这套本来用来缓冲风险的机制,为什么会在 2012 年差点反过来把开放 Web 本身掀翻。


02|事故的前情提要:移动端 WebKit 太强了

要理解这场危机,得先回到当时的格局。

那几年,移动 Web 的门面基本被 WebKit 抢走了。iPhone、iPad、Android 浏览器,一路把 WebKit 推成了移动端的主流现实。很多开发者的工作流,也开始跟着它转。

这本来不一定是坏事。

坏就坏在:很多人开始把“移动 Web = WebKit”当成默认常识。

于是教程只写 -webkit-

示例只演示 -webkit-

项目赶时间,也只测 WebKit。

写着写着,-webkit-border-radius-webkit-transform-webkit-animation 这些本来带着“实验中”标签的东西,慢慢在生产代码里混成了事实标准。

问题这才真正出现。

因为标准最怕的,从来不是有人搞实验。

而是实验语法先被全行业当成正式写法

一旦网页都只照着某家实验前缀写,其他浏览器就会陷入一种特别丢人的处境:你明明可能已经支持正式语法,用户和开发者却只会说一句,

“为什么这个效果在你这里不行?”

这就像考试答案明明在标准教材里,结果全班都在背隔壁补习班的盗版讲义。你不照着那份盗版讲义答,分就拿不到。


03|2012 年 2 月:CSSWG 开会,会议标题已经很不吉利

2012 年 2 月,CSS Working Group 在巴黎开会,随后又有一次电话会议。

后来的官方总结文章标题长得惊人,几乎像在刻意留档:
Everything You Ever Wanted to Know about the CSSWG -webkit- Discussions

你只要看里面第一段,就知道问题有多严重。

W3C 自己写得非常直白:

  • 这是个争论非常激烈的话题
  • 各方连彼此立场的细节都还没完全消化
  • Mozilla、Opera、Microsoft 至少一致认为:确实出了一个急需处理的大问题

更要命的是,正文一上来就点破症结:

移动端 WebKit 的垄断压力,已经逼得其他引擎开始考虑要不要去实现 -webkit- 属性。

到这里,整件事的荒谬感就已经拉满了。

本来前缀制度的原始逻辑是:

“不同厂商先各自试验,别互相污染。”

现在现实逼出来的新逻辑却变成:

“因为大家都在用某一家厂商的实验写法,所以其他厂商最好也来兼容一下。”

这套逻辑如果真的全面落地,会发生什么?

答案非常简单:

市场份额会开始反向定义标准。

谁用户多,谁的临时语法就会越来越像正式规则。

这也是为什么当时很多人会立刻联想到 IE6

因为 IE6 时代最让人后怕的,不是它有 bug,而是它能让整整一代网页围着它的 bug 长出来。

-webkit- 危机最可怕的地方,也在这里。

它不是一个属性名的问题。

它是在问:

开放 Web 会不会再一次,被最强势的实现拖成“先兼容它再说”的世界。


04|这一次,连 CSSWG 主席都急到出来喊人

这场风波里最有戏剧性的一个人,是 Daniel Glazman

他当时是 CSSWG 共同主席之一。危机一爆,他很快发出了一篇语气非常重的呼吁,题目几乎像拉警报:

CALL FOR ACTION: THE OPEN WEB NEEDS YOU NOW

后来的 WaSP 文章、社区讨论都反复引用这篇呼吁的核心意思:

  • WebKit 在移动端过强
  • 现在移动 Web 上已经充满了“只在 WebKit 下工作”的站点
  • 如果这趋势继续,别的浏览器很可能会开始自己去实现 -webkit-*
  • 那样一来,市场份额就会变成事实标准
  • 开放 Web 的标准化过程会被掏空

Glazman 那种急,并不是表演性的。

你从社区当时的反应也能看出来,大家真的闻到了熟悉的坏味道。Remy Sharp 的文章标题直接写成:

Vendor Prefixes - about to go south

意思很粗暴:这事要坏。

Paul Irish 也跳出来说:前缀这套东西,本来就不对开发者友好。Christian Heilmann、Rachel Andrew、Adrian Roselli、Bruce Lawson、PPK……一圈人都在发声。

这些文章的共同情绪几乎一模一样:

我们不是在讨论一个语法细节,我们是在看开放 Web 的一块地基开始松了。


05|最尴尬的地方:谁都不算完全无辜

这场危机特别适合写成“坏人 vs 好人”的故事。

可惜真实历史没这么干净。

Apple 和 Google 要不要背锅?当然要背一些。因为 WebKit 系长期把带前缀的实验能力大规模暴露给真实站点,客观上就是在鼓励开发者把“实验”当“正式”。

Mozilla、Opera、Microsoft 无辜吗?也谈不上。因为当生态已经被 -webkit- 绑起来时,他们也开始认真考虑“要不要少量兼容对手前缀”,这本身就说明大家都被现实逼到了墙角。

开发者无辜吗?也不完全无辜。很多站点偷懒,只写 -webkit-;很多教程图快,把实验写法包装成“CSS3 技巧”;很多人明知应该补前缀和无前缀版本,最后还是只顾眼前能跑。

所以这场危机最难堪的地方就在这儿:

每个人都只偷了一点懒,最后整个 Web 一起收账。

这也是为什么 2012 年的讨论会那么憋屈。

因为它不是某一家突然作恶,而是整条链路长期积累出来的后果。

厂商抢跑一点。

教程省事一点。

项目赶工一点。

工具链不完善一点。

到最后,前缀这套原本为“未来可变性”服务的机制,反而成了锁死未来的链条。


06|W3C 当时到底在想什么补救?

官方总结里其实把几条补救路线都写出来了。

大意有三条:

  1. 把稳定特性推进得更快
  2. 对一些已经相对成熟的特性,更早去掉前缀
  3. 必要时拆分规范,让稳定部分先走

翻译成白话就是:

既然前缀会在漫长等待里被开发者用成事实标准,那就别让“等待”拖太久。

这点其实很重要。

因为 2012 这场危机,某种程度上也是 CSSWG 对自己的一次倒逼。它让工作组不得不承认:如果规范成熟得太慢,而浏览器和开发者又跑得太快,中间那段真空地带一定会长出怪物。

后来 2012 年 8 月,CSSWG 又讨论了实验特性的政策调整。官方博客里已经能看出明显的收束方向:

  • 真正不适合上 Web 的东西,就继续前缀、继续别外露
  • 真正上了标准轨道的东西,别无限期拖在实验状态
  • 不稳定特性若已出现在发布版,最好同时支持前缀和无前缀,给作者调整空间

这不是完美答案。

但至少说明,CSSWG 终于不再把前缀只当成理论政策看,而是开始把它当成一场已经在线上发生的事故来处理。


07|为什么说它差点把开放 Web 拖回 IE6 时代?

因为这两件事的结构几乎是同构的。

IE6 那场老灾难的核心,不只是 IE6 自己有多糟,而是:

开发者为了兼容最强势的实现,开始写出越来越多只对它负责的网页。

时间一长,网页不再围着标准长,而是围着市场份额长。

2012 的 -webkit- 危机,吓人的正是这一点。

如果其他浏览器真的大规模去兼容 -webkit-*,再加上开发者继续默认只写 -webkit-,最后会形成一种极其别扭的“新秩序”:

  • 标准名义上还在
  • 工作组还在开会
  • W3C 还在发文
  • 可真正决定生产代码写法的,已经不是规范,而是最强势实现留下来的习惯

这不就是换了皮的 IE6 时代吗?

所以当年很多人反应才会那么激烈。

他们不是在为几个前缀字符串吵架。

他们是在为一句更大的话着急:

Web 到底是围着标准转,还是围着市场份额转?

这场危机最后没有把开放 Web 彻底拖回去。

但它确实让整个行业都看清了一件事:

标准化从来不是“把文档写出来”就结束,它还得不断防止现实把自己架空。


如果你只记一句,那就记这句:

2012 年的前缀危机,真正可怕的不是 -webkit- 太多,而是大家差点默认:谁最强,谁的实验语法就算标准。


编者注(事实核对)2012-02 的 CSSWG 巴黎 F2F 与后续电话会议、官方总结、以及 “Mozilla、Opera、Microsoft 认为问题已非常严重” 等表述,依据 W3C 2012-02-19 CSS WG BlogVendor Prefixes wiki 明确保留了当年围绕前缀政策的讨论痕迹,并在页首注明那是历史性材料、后续政策已调整。Daniel Glazman 的公开呼吁及 WaSP、Christian Heilmann、Remy Sharp 等人的响应,可由同期文章互证。文中将其类比为“差点回到 IE6 时代”,属于历史结构上的比较,不是当年所有当事人的原话。


关键人物速览

  • Daniel Glazman:时任 CSSWG 共同主席之一。第六篇里那种“事情已经坏到必须公开喊人”的紧迫感,最集中地体现在他那篇呼吁里。
  • Tantek Çelik:Mozilla 一侧的重要代表人物。前缀危机的很多会议记录里,他都是推动“先想办法把损害降到最低”的核心声音之一。
  • Sylvain Galineau:Microsoft 一侧的关键代表。第六篇里“这已经不是小问题”的那种判断,微软这边并不比 Mozilla 和 Opera 轻。
  • Remy Sharp:开发者社区中最早把这件事写得又直白又刺耳的人之一。很多圈外读者真正意识到前缀危机有多离谱,往往是从他的文章开始。
  • Peter Linss:CSSWG 长期活跃人物之一。围绕“规范里绝不可能正式引入 -webkit- 前缀”这种边界澄清,他是很关键的解释者。

参考与延伸阅读

  1. W3C CSS WG Blog:-webkit- Discussions(2012-02-19)
    https://www.w3.org/blog/CSS/2012/02/19/resolutions-24/

  2. CSSWG Wiki:Vendor Prefixes(历史讨论页)
    https://wiki.csswg.org/spec/vendor-prefixes

  3. W3C CSS WG Blog:Experimental Features Policy(2012-08-30)
    https://www.w3.org/blog/CSS/2012/08/30/resolutions-53/

  4. WaSP:Call for action on Vendor Prefixes
    https://www.webstandards.org/2012/02/09/call-for-action-on-vendor-prefixes/index.html

  5. Christian Heilmann:Now vendor prefixes have become a problem, want to help fix it?
    https://christianheilmann.com/2012/02/09/now-vendor-prefixes-have-become-a-problem-want-to-help-fix-it

  6. Remy Sharp:Vendor Prefixes - about to go south
    https://remysharp.com/2012/02/09/vendor-prefixes-about-to-go-south/

  7. Paul Irish:Vendor Prefixes Are Not Developer-friendly
    https://paulirish.com/2012/vendor-prefixes-are-not-developer-friendly

  8. Adrian Roselli:Browser Makers Caving to Vendor Prefix Misuse
    https://adrianroselli.com/2012/02/browser-makers-caving-to-vendor-prefix.html


下篇预告:标准都写出来了,为什么主流引擎就是不想实现。