01|这一回,敌人不是语法,是分裂

第一篇里,CSS 还像个年轻提案,站在会议门口,手里攥着几页纸。

到了 1995 年底,门开了。

门里不是程序员论坛,不是爱好者邮件列表,而是 HTML Editorial Review Board,简称 HTML ERB。这名字听着像行政部门,干的事却很像古代分封:什么东西算正统,什么东西先等等,什么东西永远别想进来。

CSS 被抬上这张桌子,目标也很明确:做成 W3C Recommendation。

听上去像技术流程,其实先是政治问题。因为那时候最吓人的,不是 CSS 写得不够优雅,而是 浏览器厂商各干各的。Lie 和 Bert Bos 在回忆里写得很直白:微软已经放出信号,说 IE 要支持 CSS;如果再拉不来网景,Web 很可能往两套规格上裂开。

这就是第二篇真正的主线。

不是“CSS 如何诞生”,而是:CSS 能不能活成一个大家都认的东西。


02|微软先动了,网景就没法装没看见

1995 年,W3C 在巴黎办了一场样式表工作坊。会上,Thomas Reardon 代表微软表态:未来的 Internet Explorer 会支持 CSS。

这件事的分量,今天很容易低估。

因为你现在回头看,会觉得“支持标准不是应该的吗?”可在 1995 年,这不是常识,这是站队。谁先支持,谁就能先把自己包装成更现代、更开放、更像下一代 Web 的那一个。

而桌子的另一边,坐着的是网景的人。Lie 和 Bos 点过名:Lou Montulli 在 ERB 里。

你可以想象一下那种空气。

CSS 还没正式盖章。

两家浏览器已经在门外磨刀。

会议室里的人嘴上谈的是规范条文,心里想的却是另一件事:要是微软先把“标准”这块牌子抢走,网景怎么办?

很多后来的技术史,写到这里会突然变成公司史。其实这很正常。因为标准从来不是在真空里长出来的。它要先能被厂商接受,才有资格被开发者抱怨。


03|最滑稽的一幕:标准还没定稿,浏览器先发了

真正荒诞的戏来了。

1996 年 8 月Internet Explorer 3 发布。常见资料写 8 月 13 日;W3C 当年的 CSS support in MS IE 3.0 页面写 8 月 14 日。差一天,不影响结论:IE3 是第一款支持 CSS 的商业浏览器。

问题在于,那时候 CSS1 还没正式成为 Recommendation

也就是说,车先开了,轨道还在补。

Lie 和 Bos 后来写得很冷静,但字里行间其实全是那个年代特有的狼狈:微软这边已经把产品推上市场,ERB 那边还在继续打磨条文。Chris Wilson 带着 IE 团队往前冲,不可能等每一条规范都完全落稳再出发。

所以 IE3 的局面特别有代表性。

它能用吗?能。

它先进吗?当然先进。

它完整吗?并不。

颜色、背景、字体、文本样式,它做了很多;可一到更麻烦的地方,尤其是 盒模型 相关,实现就开始露怯。W3C 自己那页老文档里,明晃晃列着一堆缺口:padding 不行,em 单位不行,URL 写法也有毛病,连不少继承和排版细节都磕磕绊绊。

可你也别急着笑话 IE3。

它的问题,某种程度上也是 CSS 的问题:这门语言第一次被人认真搬进商业世界,很多账,得跑起来才知道怎么算。


04|1996 年 12 月 17 日:终于盖章,但谁都没轻松下来

1996 年 11 月 12 日,CSS1 进入 Proposed Recommendation

1996 年 12 月 17 日,它终于成了 W3C Recommendation

从出版历史和正式文档都能对上。

按理说,故事写到这里,应该响起掌声。

可真站在那个时间点上,这更像是签了一份停战协议,而不是迎来天下太平。

W3C 的新闻稿当然写得漂亮:作者可以写样式,用户也保有调整权;产业界开始支持;这是迈向互操作的重要一步。每一句都没错。只是对当年的作者来说,屏幕上更真实的感受大概是另一句:

“好,标准有了。那浏览器现在到底听不听?”

这是 CSS 历史里一个很迷人的时刻。

纸面世界已经宣布秩序建立。

现实世界还在继续打架。

从这以后,“标准通过”不再意味着“事情结束”,反而常常意味着:真正麻烦的部分,现在才开始。


05|网景不想输,但也不想老老实实照做

如果说微软这一边的剧情是“先上车再补票”,那网景那边更像“我可以跟,但你别指望我完全按你的来”。

Lie 和 Bos 对 Netscape Navigator 4 的评价并不客气。

他们的意思大致是:网景从一开始就对样式表这件事有保留;后来真做了,又更像是一种战略防守,防的是微软把“更标准”这面旗子直接插到山头上。于是你会看到一种很典型的 90 年代浏览器姿态:

功能表可以先写得很漂亮。

细节,回头再说。

结果就是,Navigator 4 号称支持了不少 CSS 特性,可真落到页面上,很多东西并不可靠。你以为它会,它未必真会;你以为它不会,它有时又会一点。那种飘忽不定,后来几乎成了一代前端的集体记忆。

更绝的是它的另一条岔路:JSSS

网景没有只把 CSS 塞进浏览器,它还试图给开发者另一套东西,让样式可以直接绕到 JavaScript 那边去写。Lie 和 Bos 后来专门提了这件事,因为他们很清楚:如果 JSSS 真站稳,Web 很可能会多出一套平行的样式体系。

这才是那几年最危险的地方。

不是谁吵得凶。

是每家都觉得:既然规则还没完全定,那我不如自己先发明一套。

很多技术不会死在反对声里,反而会死在“大家都有一点自己的主意”里。CSS 当年差一点也这样。


06|1997 年 2 月:CSS 总算有了自己的房间

1997 年 2 月,CSS 在 W3C 里终于有了自己的工作组

这件事看起来平淡,其实很重要。

它意味着 CSS 不再只是 HTML 体系下顺手处理的一块边角料,而是终于被承认为:这是一门会持续膨胀、持续吵架、持续需要专人收拾残局的语言。

新工作组由 Chris Lilley 担任主席。

从这一步开始,CSS 才真正像一个要长期活下去的标准,而不是一次性的救火方案。后面会有 CSS2,会有更大的野心,会有更多特性,也会有更长、更难看、更让人头疼的还债史。

但那都是后话了。

第二篇说到这里,最该记住的其实不是某个日期,而是一个画面:

会议室里,一群人试图用条文把 Web 绑在一起;会议室外,浏览器已经边跑边改,谁也不肯等谁。

CSS1 就是在这种前后夹击里,被硬生生推成了“标准”。

它不是优雅地诞生的。

它是被现实逼出来的。


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

CSS1 不是写出来的,它更像是被微软、网景、W3C 和时间表一起挤出来的。


编者注(事实核对):ERB、巴黎工作坊、Thomas ReardonLou Montulli、微软先行支持与“必须把网景拉上船”的判断,主要据 Lie & Bos 第 20 章Bert Bos《A brief history of CSS until 2016》CSS1 Proposed Recommendation 为 1996-11-12,Recommendation 为 1996-12-17,以 W3C 正式文档与出版历史互证。IE3 首发常见资料写 1996-08-13,W3C CSS support in MS IE 3.0 页写 1996-08-14,正文已注明一日差异。Navigator 4、JSSS、IE3 与 CSS1 REC 的先后关系,据 Lie & Bos 在 “Browsers” 一节中的叙述整理。


关键人物速览

  • Thomas Reardon:微软早期浏览器团队关键人物之一。本文里他代表的是微软在 1995 年就公开表态支持 CSS 的那股力量。
  • Lou Montulli:网景早期核心人物之一,也是 HTML ERB 成员。第二篇里他代表的是“网景不能被排除在标准牌桌外”这层政治现实。
  • Chris Wilson:微软 IE 团队的重要工程师。本文里提到他,是因为 IE3 已经先发货,而 CSS1 规范本身还没完全落稳。
  • Chris Lilley:1997 年 CSS 独立工作组成立后的主席。这个名字在第二篇最后出现,意味着 CSS 从“夹在 HTML 里的工作项”开始变成一条独立战线。

参考与延伸阅读

  1. CSS1 W3C Recommendation(1996-12-17,REC-CSS1-961217)
    https://www.w3.org/TR/REC-CSS1-961217

  2. CSS1 出版历史(含 PR 1996-11-12 等节点)
    https://www.w3.org/standards/history/css1/

  3. W3C 新闻稿:CSS1 Recommendation(1996)
    https://www.w3.org/Press/CSS1-REC-PR.html

  4. Lie & Bert Bos 合著第 20 章 The CSS saga(ERB、浏览器、JSSS、IE3)
    https://www.w3.org/Style/LieBos2e/history/Overview.html

  5. Bert Bos《A brief history of CSS until 2016》(ERB、1997 独立 WG、Chris Lilley)
    https://www.w3.org/Style/CSS20/history.html

  6. W3C:CSS support in MS IE 3.0(IE3 与 CSS 的早期互证)
    https://www.w3.org/Style/CSS/msie/

  7. Internet Explorer 3(发行日等第三方概览,与 6 交叉)
    https://en.wikipedia.org/wiki/Internet_Explorer_3


下篇预告:CSS2 越写越大,浏览器越跑越偏。