CSS 概述

Cascading Style Sheets 层叠样式表,是一种用来为 Web 文档添加样式的声明式语言。一般用来定义 HTML 元素的样式,也能用于其他标记语言,如 SVG 和 XML。

历史

从1990年 HTML 诞生开始,将文档结构与文档布局分离就是 HTML 的一个目标。

1994年 Håkon Wium Lie 发表 CHSS(Cascading HTML Style Sheets)草案,Bert Bos 当时正在设计 Argo 浏览器,看到草案后,决定加入协助 Håkon,Argo 样式语言的一个特性是足够通用,可以应用于除 HTML 之外的其他标记语言。这也成为 CSS 的设计目标,于是 CHSS 中 “HTML”被移除,命名为 CSS。CSS 当时并不是唯一被提名的样式语言。

1995年 4月,CSS 再次在 WWW 会议上提出,会上有个争论点是 Håkon 和 Bert 认为当样式表达有冲突时,用户有最终决定权。

1995年,W3C(World Wide Web Consortium)开始运作成立,并组织成立以样式表(Style Sheets)为主题的研讨会(workshop)。Håkon 和 Bert 也成为了 W3C 技术人员,进行样式表相关工作。1995年底,W3C 设立 HTML Editorial Review Board 来批准未来 HTML 规范(specification),CSS 规范作为其中一个工作项。

1996年底,W3C 发布了 CSS1 推荐标准(Recommendation),HTML ERB 内部的斗争是漫长而艰难的,比如成员 Microsoft 和 Netscape 分歧。

1997年2月,W3C 设立 CSS 工作组(Working Group),“Cascading Style Sheets and Formatting Properties Working Group”

1998年5月,发布 CSS2 推荐标准。

1999年,CSS2 编写完后,Håkon 加入了 Opera,以确保至少有一个浏览器能够正确地实现这些规范。

在 CSS2.1 之后,也可以说是从 CSS3 开始,因为规范的制定范围不断地增加,并且不同的 CSS 模块进展差异较大。以致 W3C 不再对 CSS 规范进行版本控制,而是按照 CSS 模块独自开发,并发布相应版本号或者级别。W3C 会定期对 CSS 规范的最新稳定状态和各个模块的进展做快照记录。

浏览器实现

规范有了,但 CSS 规范没有规定浏览器必须如何实现样式系统,只是规定了必须做什么。因而不同样式系统引擎可能有不同的性能表现。

第一个宣称支持 CSS 的商业浏览器是 Microsoft 于1996年8月发布的 Internet Explorer 3,第二个宣称支持的是 Netscape 的 Navigator 4.0,但早先 Internet Explorer 和 Navigator 浏览器支持有限,且对支持的 CSS 规则处理有不少差异,Netscape 一度想用 JSSS(CSS 转化为 JavaScript 执行)方案,这和 React 用 JavaScript 处理 CSS 有些相似,直到2000年 Internet Explorer 5.5 发布,才几乎完全支持 CSS1。

第三个支持 CSS 的是 Opera,Opera 3.5 于1998年11月发布,支持大部分 CSS1。

2003年,Netscape 解散,成立 Mozilla (Mozilla 是 Navigator 项目在公司的内部代号)基金会,2004年,基于新的内核 Gecko,发布浏览器 Firefox。

2004年,Apple 发布浏览器 Safari,Web 内容引擎是基于 KHTML 的 WebKit。

2008年,Google 开发 Chrome 浏览器,基于 WebKit,后因和 Apple 分歧,2013年起,使用基于 WebKit 分支开发的 Blink 作为渲染引擎。

目前主流浏览器均能很好支持 CSS2+。

分歧记录

div { -xy: expression(this.x ? 0 : (function(t) {alert(t.tagName); t.x = 0; } )(this)); }

文章参考