CSS样式文件是一个和文本文档一样简单的文件,里面不存在程序那样可循环的语义结构,它是按照从左到右、从上到下的解析顺序按部就班解析的。
但根据样式表分类的不同,它的优先级会发生变化。
你也许发现了,如果我们不给网页添加CSS样式,它也会有一些特效,比如文本是黑色的,未访问过的链接是蓝色的,访问过的链接是紫色的,这些都被称为“缺省”浏览器样式。
加上以前介绍过的CSS样式分类,我们现在总共了解了四种样式表,它们是:
- 1.浏览器缺省样式表(优先级最低)
- 2.外部样式表
- 3.内部样式表
- 4.内联样式表(优先级最高)
他们的优先级别由高到低依次是:内联样式表、内部样式表、外部样式表、浏览器缺省样式表。举个例子说明一下:
新建一个index.css文件,其内容如下:
.h1.bigone {font-size:12px;color:yellow;text-align:center;}
.h1.bigone {color:red;}
新建一个网页文件,其内容如下:
<html>
<head>
<title>无标题文档</title>
<link href="index.css rel="stylesheet" type="text/css">
<style type="text/css">
<!--
h1.bigone {font-size:14px;color:blue;text-align:center;}
-->
</style>
</head>
<body>
<h1 class="bigone" style="font-size:16px;color:green;">判断一下这里的文字是何效果。</h1>
</body>
</html>
这段代码把所有的样式表都加在页面中了,它最后的显示效果究竟是哪个?答案是16像素的绿色字体。按照样式表的优先级解释,写在标签里的内联式表是最优先被解析的,它覆盖了其他样式表。
如果去掉这段写在标签上的内联样式表(style="font-size:16px;color:green;"),那么页面中的内部样式表就会发挥作用,这段文字会变成14像素的蓝色字体,它覆盖了另外两个样式表。
再如果去掉了页面里的内部样式表(<style type="text/css">至</style>中的内容),文字将变成index.css文件里设置的12像素红色字体,它覆盖了除它以外唯一存在的浏览器缺省样式,有人会问,它为什么不是黄色呢?上面不是先定义的color:yellow吗?这里提到了一项补充规则:优先级相同的情况下,后定义的属性会覆盖先前定义的,所以下面的color:red覆盖了上面的color:yellow。
最后若去掉外部样式表(<link href="index.css rel="stylesheet" type="text/css">),就只剩下浏览器的缺省样式表来解析页面样式了,文字将变成默认的32像素黑色字体。