写在前面,我们在去理解一个事物时,最起码需要提前对事物有一个基本的了解,不然我们只会是胡乱猜测和蠡测管窥。
就比如 当我们知道了CSS的语言特性,我们可以去理解“后端程序员往往对CSS的理解没有对java或c++这么如鱼得水”。因为后端开发更看重的是程序员的逻辑思考能力,但是CSS不太一样,没有太多的逻辑,更加需要人们的抽象意识(可以称为感觉)以及需要去理解特性之间的联系和联动。
当然学习CSS也是需要花费大量的时间,后端开发接触CSS不是类java语言,自然融会贯通就没有其他语言那么容易,这也是我们需要好好去沉下心研究的原因之一。
接下来,作者会从将CSS世界具象为一个故事,让元素和故事们变得有血有肉。
CSS世界的奇妙故事
作者很形象生动得介绍了元素和CSS属性之间的美妙关系,太多了,我也不多加细讲了。大概就是:将元素看做魔法石头,将CSS属性比作魔法师,魔法师使用自己魔术让魔法石千变万化。emmm,还不错,感觉作者还是很用心很可爱得跟我描述的。
当我们将CSS世界与现实世界联系在一起时,我们可以通过现实世界具象化的理解CSS世界,再者我们借助现实世界可以更加全面地去理解CSS,可以培养从宏观角度去认识与理解CSS。
走进CSS的过去
任何一个事物都是有自己发展轨迹和历史,CSS也不例外,有着自己独特的历史。CSS的发展是从1990s那个互联网朝气蓬勃的时代开始的。
CSS在百花争放的互联网时代胜出,凭借着就是自己的特性cascading(层叠或者级联),意思就是属性可以从父级继承也可以自己设置覆盖父级。
那时代的网页主要用户展示图片和文字,所以可以将CSS看做是服务于图文信息展示。
那如果叫你去设计一个描述图文信息的世界,或者说展示图文信息的一套规则,你会怎么去设计?
CSS语言设计的精髓--“流”
十五年前,SVG被设为w3c的标准之一,而SVG的优势之处就在于图片处理,这一点在当时比CSS强,但是却依旧被CSS打败,原因在于CSS“流”的设计,比如文字可以自动换行,可以多行显示,这在SVG看来却很困难。
- 什么是“流”
所谓的流,我觉得可以用我们通常形容HTML文档排版的文档流来理解,其实就是一套CSS定位和布局机制,HTML文档就是依靠这种“流”的模式进行网页排版。
- CSS世界是怎么依靠“流”的
- 遵守“流”的规则。HTML元素使用“流”布局,CSS世界就是“流”的天下了。
- 对"流"搞破坏。 当我们有不同于普通流的需求时,可以通过破坏“流”的方法,实现一些非常规的布局。
- 流向的改变。 我们可以发现CSS世界中“流”的方向是默认“从左到右,从上到下的”,但是其实这种流向是可以改变的。
- 流体布局: 使用“流”的特性实现各式各样的布局特性。
- 现在所探究的是CSS2.1,只有IE8及以上才兼容。
- table元素表现有些和“流”不一致,所以我们不讨论table。