资讯专栏INFORMATION COLUMN

重拾css(4)——样式来源与层叠规则

gityuan / 2657人阅读

摘要:摘自设计指南样式来源上文中提到,之所以有层叠的概念,是因为有多个样式来源。优先级相同条件下例如都来自引用样式,覆盖的默认规则是后者覆盖前者,但是有一个特殊情况,其实优先级最高。

这一节就开始实践上一节的思路!

1.“层叠”的概念

简言之,层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程。举一个简单的例子:

上图中有两个样式来源,第一个是引用的css1.css,第二个是自己在style中编写的样式。“层叠”是个叠加的过程,可通过下图表示:

层叠是CSS的核心机制,理解了它才能以最经济的方式写出最容易改动的CSS,让文档外观在达到设计要求的同时,也给用户留下一些空间,让他们根据需要更改文档的显示效果,例如调整字号。——摘自《CSS设计指南》

2.样式来源

上文中提到,css之所以有“层叠”的概念,是因为有多个样式来源。其实css的样式来源有下列5个(由上至下为优先级由高至低),开发人员只能接触到上面3个。

第一,浏览器默认样式表
当你不为html设置任何样式时,b标签会显示粗体、p有纵向margin、h1字号比p大一倍……这是为什么呢?

因为浏览器自带一个默认的样式,如果html中没有为标签设置样式,则浏览器会按照自己的样式来显示。但是浏览器默认样式的级别是最低的,一旦有其他地方设置了标签样式,浏览器默认样式就会被覆盖掉。

注意,不同浏览器的默认样式有些地方是不一样的。例如,我们在写css时,都会首先设置 * {margin:0; padding:0;},这是为何?就是因为有浏览器兼容性问题。干脆,全部弄成0,这样各个浏览器就都统一了。

我们下一节专门解说默认样式,有很多值得玩味的地方。

第二,用户样式表
在一些新闻网站中,经常看到可以设置字体大小的快捷菜单,例如下图就是搜狐新闻中的设置。

其实浏览器也有这样的设置,例如chrome浏览器中,我们就可以设置字号和字体。

用户在这里设置了字体和字号之后,它们会覆盖掉浏览器默认的样式。

第三,引入的css文件
引用css文件,大家应该都比较熟悉了。

第四,