CSS布局的前世今生

2016-07-13  本文已影响84人  七个马甲

文章来源:fantasai的演讲记录

黑暗时代

直到1990年代中期,网页设计仍然不堪入目,HTML元素里混杂着样式控制,例如用H1来表示更大的字体,在TABLE里设置背景色,当时算得上技巧别致的布局方法是在TABLE里放置透明的GIF图片来占位。

CSS1时代

90年代后期,CSS被发明出来的初心是为了让样式与结构分离,用一种简便的语法把控制样式的代码写在一个独立的文件内,这种概念在当时显得超前。
CSS1并没有真正控制布局的工具,它主要是为了代替HTML里一些与样式相关的属性,例如宽度、高度。CSS1定义的属性有width、height、float、clear、margin、padding、backgrounds、borders、fonts、list styles、alignment、white-space等。其中float是为了代替HTML里用于IMG和TABLE的align属性,float在CSS1的设计意图里并非用于左右布局,仅仅是按照float的字面意义——实现图文环绕的效果。
CSS1的主流布局方法仍然是TABLE。边距margin和padding的出现,使得我们可以在TABLE之间实现间隔,取代过去用于占位的透明GIF以及换行符BR。这些概念在今日看来理所当然,但在当时却是革命性的。

CSS2时代

1998年W3C发布了CSS2,把当时最先进的布局工具引入CSS。通过display属性的灵活使用,HTML的任意元素可以被转换为任意的显示方式。网页设计者不必再被HTML元素的固有布局限制,能够在保证语义的基础上,实现更灵活的视觉效果。例如导航菜单能够横排并列,为了保持sidebar和main两列高度一致,可以把它们都设为display:table-cell
此时,布局思想仍然是以TABLE为基础,display包含了众多与table等价的值,是为了方便其他元素转换为table。然而,由于不同浏览器的内核差异,以table为基础的布局方法很难实现跨浏览器兼容。
在这样的背景下,聪明的网页设计者开始发掘其他属性来控制布局,浮动和定位的地位一跃成为主流,奠定了所谓DIV布局的江山。这种布局思想的灵活性非常强,充分利用CSS2里的各种材料,衍生出无数技巧。但从宏观结构的角度来看,技巧性布局的做法像是在建造房子时不搭建钢筋混凝土框架、仅仅用混杂的材料胶粘拼接而成。不利于维护,也不利于理解。
CSS的工作组一直在为了“让样式的构建和表达更具意义”而努力。在CSS2的实践过程中发现存在诸多模糊之处,有些特性缺乏实用性,浏览器的兼容性更成为切图人员的噩梦。2002年,CSS2.1修订版发布,弥补了很多漏洞。与此同时,浏览器开发商也在逐步改善对CSS的支持。CSS2.1在2000年代后期稳固了统治地位,为CSS3标准的制定打下坚实基础。

CSS标准的发展与浏览器市场的变化密不可分。在黑暗年代和CSS1初生时期,Netscape与IE争霸;21世纪初,IE6一统江湖;2000年代中期,各类浏览器崛起,兼容性成为重要挑战;2000年代后期,浏览器对CSS的支持渐趋一致;2010年代初,随着移动端的需求,HTML5和CSS3兴盛。

CSS3时代

CSS3采用模块化设计,各个部分可以各自发展升级,主要分为四块(从易到难):

网页VS打印

CSS3布局:设计原则

CSS3是CSS工作组首次要为2D布局设计一个含义明晰的系统。这套系统需要具备:

CSS3的布局模块

CSS规范的产生过程

三个阶段

创新资源

对CSS的建议来源于四面八方,包括实践、设计者、工作组的专家等。工作组并没有决断者,一个好的设计需要让所有参与者接受。例如圆角、过渡、动画、转换是出于实践的需求,多重背景、选择器、多列布局、媒体查询、颜色格式是基于规范的理论,边框图像是出于设计目的,伸缩布局、文本是各种来源综合形成的规范。

评审和修订

建立规范的过程,并不都是从草案起步。很大程度上是在回应反馈的过程中不断评审、修订,发展出一套东西。

上一篇 下一篇

猜你喜欢

热点阅读