网页出版提出的新问题
层叠样式表(Cascading Style Sheets,CSS)产生于万维网由科研信息交换走向大众出版的阶段。超文本标记语言(Hypertext Markup Language,HTML)能够标示标题、段落和链接,却不适合承担精细的页面排版。出版者希望指定字体、颜色和间距,读者则可能需要大字、高对比度或不同设备上的显示方式。两种要求并不总是一致。
1994年,在欧洲核子研究中心工作的哈肯·维姆·莱提出一种可以经网络传递的样式表。他指出,当时浏览器的显示设置往往依赖特定平台,作者也难以附加自己的排版建议。新方案因此要给双方共同的表达方法,并在发生冲突时协调影响,而不是把网页固定成一张只能按原样观看的印刷版面。
从提案到共同设计
莱于1994年10月10日公开《层叠HTML样式表》提案,版本号为0.92。文件明确承认它尚不足以直接指导实现,目的在于提出原则和征求意见。早期方案甚至尝试用百分比表达各方对字号等属性的影响;这说明后来所谓“层叠”并非从一开始就具有定稿语法。
正在开发Argo浏览器的伯特·博斯参与讨论,两人逐渐合并思路。博斯的工作强调样式机制也可用于HTML之外的标记语言,名称中的“HTML”随后被去掉。1995年4月,两人在德国达姆施塔特的万维网会议展示了Argo和改造过的Arena浏览器。概念讨论由此获得可观察的实现,用户与作者谁应拥有最终控制权仍是争论焦点。
用一条规则解释方法
CSS一级规范的基本单位是规则,由选择器和声明组成。例如写下“h1 { color: blue }”,浏览器便把匹配的一级标题文字设为蓝色;h1指出目标,color是属性,blue是取值。HTML继续表达“这是标题”,CSS负责提出“标题如何显示”。标题内部的强调文字若没有另定颜色,还可继承标题的颜色。
样式既可写在文档中,也可放在外部文件里供多个页面引用。若一份规则指定全部标题为蓝色,另一条更具体的规则又针对某类标题,两者就不能简单同时执行。规范规定了重要性、来源、选择器具体程度和出现顺序等判断条件,由浏览器决定采用哪项声明。“层叠”因此是一套处理多方规则的机制,并不只是文件上下排列。
参考:[2]
1996年的标准与实现
工作转入万维网联盟(World Wide Web Consortium,W3C)的协商程序后,样式表研讨会、公共邮件列表和HTML编辑审查委员会共同推动规范收敛。1996年12月17日,莱和博斯署名的CSS一级成为W3C推荐标准。因此,1996年所指的是首个正式推荐规范的形成,不是样式表思想或CSS草案首次出现。
软件支持并未等到标准定稿才开始。1996年8月发布的微软Internet Explorer 3已有CSS支持,但主要集中于颜色、背景、字体和文本,盒模型实现仍有限。W3C同期还列出Arena、Emacs-W3等实验实现。早期浏览器既帮助检验方案,也暴露出兼容性落差;标准发布不能理解为所有用户立即获得完全相同的页面效果。
维护方式的改变及其边界
CSS最直接的价值在于把重复的排版决定集中管理。一个网站可以让许多页面链接同一份样式表,调整它就能改变共同外观,不必逐页修改标题标签。文字仍以文字保存,也减少了为获得漂亮字体而把文本制作成图片的需要,有利于检索、朗读和内容再利用。这些收益取决于作者保留有意义的文档结构。
CSS一级首先建立共同语法和基本视觉样式,并未一次解决所有出版问题。更复杂的布局、打印、语音和网络字体在发布时仍被列为后续工作。它留下的核心安排,是让内容结构、样式建议与浏览器实际呈现相互配合。随后的版本和测试工作建立在这一基础上,不能把后来成熟的功能倒写成1996年已经普遍具备的能力。