多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。
1、一般情况下,优先级从低到高,如下:
浏览器缺省(即浏览器默认) →(外部样式)External style sheet →(内部样式)Internal style sheet →(内联样式)Inline style
注意:如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。
测试!
2、选择器的优先权
注:
[1] 内联样式表的权值最高 1000;
[2] ID 选择器的权值为 100;
[3] Class 类选择器的权值为 10;
[4] HTML 标签选择器的权值为 1。
利用选择器的权值进行计算比较,示例如下:
red em red
red
结果:<em> 标签内的数据显示为蓝色。
3、CSS的优先级法则
[1] 选择器都有一个权值,权值越大越优先;
[2] 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
[3] 创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;
[4] 继承的CSS 样式不如后来指定的CSS 样式;
[5] 在同一组属性设置中标有“!important”规则的优先级最大。
示例如下:
color
color
结果:在Firefox 下显示为蓝色;在IE 6 下显示为红色。
4、使用脚本添加内部样式
当在连接外部样式后,再在其后面使用JavaScript 脚本在外部样式表之前插入内部样式时(即内部样式使用脚本创建),IE 浏览器就表现出它的另类了。这种方法是使用脚本在外部样式后面插入内部样式,代码如下:
demo 在IE中我是绿色,非IE浏览器下我是蓝色!
结果:在Firefox / Chrome / Safari / Opera 中,符合内部样式如果插入到外部样式前的话,外部样式将覆盖内部样式的原则;然而在IE下却是绿色的,也就是说IE在加载完页面文档,运行了脚本插入了内部样式之后,就把文字颜色设置成绿色了而忽略了后面外部样式。
5、附加
在IE 中添加样式内容的JavaScript 代码:
var s=document.createElement("style");var head=document.getElementsByTagName("head").item(0);var link=document.getElementsByTagName("link").item(0); head.insertBefore(s,link);/* 注意:在IE 中, 虽然代码是将
6、总结
(1)层叠优先级是:
浏览器缺省 < 外部样式表 < 内部样式表 < 内联样式
(2)其中样式表又有:
类选择器 < 类派生选择器 < ID选择器 < ID派生选择器
(3)派生选择器以前叫上下文选择器,所以完整的层叠优先级是:
浏览器缺省 < 外部样式表 < 外部样式表类选择器 < 外部样式表类派生选择器 < 外部样式表ID选择器 < 外部样式表ID派生选择器 < 内部样式表 < 内部样式表类选择器 < 内部样式表类派生选择器 < 内部样式表ID选择器 < 内部样式表ID派生选择器 < 内联样式,共12个优先级