CSS样式表层叠(cascade)处理冲突

   即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。层叠给每个规则分配一个重要程度指数。作者定义的样式具有最高的重要性指数,其次是用户定义的样式。但是为了增强用户的控制能力,用户可以通过为任何规则增加一个!important来提高它的重要性指数,让它的优先级高于任何规则,甚至是比作者的!important还要高。

  因此,层叠重要性指数的次序依次为:

  标记为!important的用户样式

  标记为!important的作者样式

  作者样式

  用户样式

  浏览器/用户代理的默认样式

  为了计算规则的优先级,每种类型的选择符都有一个相应的数值,由于每个选择器都由若干选择符组成,所以选择器的优先指数由选择符对应的数值相加而成,数值越高,优先级越高。CSS中的选择符有四类:

  行内样式(Inline Style),如...

  ID选择符(ID selectors),如#myid

  类、属性选择符、伪类(Classes, attributes and pseudo-classes),如 .class {...}、[href$=dudo.org]、:hover

  元素(elements)、伪元素选择符(pseudo-elements),如 p {...}、:first-line {...}

  怎么来测量呢?如前所述,它们每一类都有不同的数值表示,其中:

  行内样式为:1000

  ID选择符为:0100

  类选择符为:0010

  元素样式为:0001

  这里要指出的是,所有这些数值都不是10进制数字,1000只是代码它是一个行内样式,

  例如,body #wrap p {...},那么它的优先级指数就是 1+100+1=102,而body div#wrap p {...}的优先级指数就是 1+ 1 +100 + 1 =103。

  再看一下其它的例子:

  * { } 0

  li:first-line { } 2 (one element, one pseudo-element)

  ul ol+li { } 3 (three elements)

  ul ol li.red { } 13 (one class, three elements)

  style=”” 1000 (one inline styling)

  div p { } 2 (two HTML selectors)

  div p.sith { } 12 (two HTML selectors and a class selector)

  body #darkside .sith p { } 112 (HTML selector, id selector, class selector, HTML selector; 1+100+10+1)

  看这段代码:

  #wrap #content {color: blue;}

  #content {color: red;}

  this is a text here

  最终文本会显示什么样的颜色呢?

  是的,样式覆盖只会发生在具有相同优先级的情况下。这个例子中#wrap #content为200,而#content为100,纵使后设定color:red,也不会覆盖掉先前设定的color:blue;。此外,你可以为#content {color: red;}增加!important来看看效果。

  以上都是在少于10个选择符的情况下,可以把这些数值当作十进制来使用和比较,但是,当选择符超过10个(虽然可能性很小)又会怎么样呢?我们参考一个Eric的例子:

  .hello {color: red;} /* specificity = 10 */

  HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI {color: green;}

  /* specificity = 15 */

  这里的10并不是“十”,它仅仅代表是一个烦选择符,所以的它的优先级依然要比 15个类型选择符组成的选择器要高。如果换成十六进制的话,就是这个样子

  .hello {color: red;} /* specificity = 10 */

  HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI {color: green;}

  /* specificity = 15 */

  但是问题,如果你再添加两个元素,就又变成了11了,还是出现前面的情况。不过你应该始终记得,即使数值“看起来”比较大,它们的排序首先按照类型优先级来决定。

时间: 2024-11-17 00:01:37

CSS样式表层叠(cascade)处理冲突的相关文章

入门:在网页中使用CSS样式表的四种方法

css|网页|样式表 如何在网页中插入CSS 前面我们了解了CSS的语法,但要想在浏览器中显示出效果,就要让浏览器识别并调用.当浏览器读取样式表时,要依照文本格式来读,这里介绍四种在页面中插入样式表的方法:链入外部样式表.内部样式表.导入外表样式表和内嵌样式. 1. 链入外部样式表 链入外部样式表是把样式表保存为一个样式表文件,然后在页面中用< link >标记链接到这个样式表文件,这个标记必须放到页面的< head >区内,如下: <head> -- <link

如何在网页中插入CSS样式表

  本例为CSS入门系列教程,在这一课中我们将学习如何在网页中插入CSS样式表,主要学习在页面中插入链入外部样式表.内部样式表.导入外表样式表和内嵌样式的四种方法,另外作者还讲解了多重样式表的叠加的运用以及如何在xml中插入CSS,希望能给对网页制作感兴趣的朋友带来帮助~~ CSS入门教程之如何在网页中插入CSS样式表 前面我们了解了CSS的语法,但要想在浏览器中显示出效果,就要让浏览器识别并调用.当浏览器读取样式表时,要依照文本格式来读,这里介绍四种在页面中插入样式表的方法:链入外部样式表.内

CSS样式表一席谈之利用CSS改变字体

css|样式表 在过去页面上的字体是一成不变的,静静的呆在那.当DHTML(动态网页)出现后,我们能有更多方式控制字体了.一般来说,动态字体的实现核心是CSS(层叠样式表)加JavaScript.使用了以上两项技术后,字体就能产生许多变化. 1.CSS定义字体的标签元素 font-family: 设置字体字族. <span style="font-family: 黑体, 宋体(GB)">田涛</span> font-sytle:设置字体类型. <span

CSS样式表:详细介绍IE7新支持的选择器

css|样式表 现在IE7已经推出一段时间并且渗透到用户当中,不用等太久我们就可以在页面上使用更高级的CSS.两个最有用的项目将是 Child子和Adjacent Sibling相邻兄弟选择符.现在已是时候使用它们制作网页,并且更深入研究它们. 注意,选择器包括现行的符号,">","+"和空格(后代选择符),涉及到子选择器,相邻兄弟选择器,后代选择器,统称为选择符. 一个较好的方法 在我们研究选择符之前,弄清楚他们的不同和为什么它们是好东西的原因是个不错的主意

Dreamweaver使用CSS样式表设置网页文本格式

了解 CSS: 层叠样式表 (CSS) 是一系列格式设置规则,它们控制 Web 页面内容的外观.使用 CSS 设置页面格式时,内容与表现形式是相互分开的.页面内容(HTML 代码)位于自身的 HTML 文件中,而定义代码表现形式的 CSS 规则位于另一个文件(外部样式表)或 HTML 文档的另一部分(通常为 部分)中.使用 CSS 可以非常灵活并更好地控制页面的外观,从精确的布局定位到特定的字体和样式等. CSS 使您可以控制许多仅使用 HTML 无法控制的属性.例如,您可以为所选文本指定不同的

CSS样式----图文详解:css样式表和选择器

主要内容 CSS概述 CSS和HTML结合的三种方式:行内样式表.内嵌样式表.外部样式表 CSS四种基本选择器:标签选择器.类选择器.ID选择器.通用选择器 CSS三种扩展选择器:组合选择器.后代选择器.伪类选择器 CSS样式优先级 CSS 概述 CSS:Cascading Style Sheet,层叠样式表.CSS的作用就是给HTML页面标签添加各种样式,定义网页的显示效果.简单一句话:CSS将网页内容和显示样式进行分离,提高了显示功能. 接下来我们要讲一下为什么要使用CSS. HTML的缺陷

CSS样式表技巧总结

一.关于注释 在创建xhtml+CSS网站时,CSS中的注释非常重要.在创建CSS样式时,应当保持随手注释的习惯.一般的,我习惯于使用"/* 注释内容 */"的格式来写注释,因为在EditPlus等具有高亮功能的编辑器里,使用C语言中常用的"/***************/"之类的注释是无意义的,没有必要填充大量无意义内容作为分隔.带有注释的文档作为网站的原始CSS文档,在发布网站的时候,可以使用CSS压缩工具压缩CSS,在输出的CSS中去掉注释以提高文件传输效率

网页添加CSS样式表的四种方式

核心提示:网页添加CSS样式表的四种方式 一.使用STYLE属性: 将STYLE属性直接加在个别的元件标签里. <元件(标签) STYLE="性质(属性)1: 设定值1; 性质(属性)2: 设定值2; ...}例如: <TD STYLE="COLOR:BLUE; font-size:9pt; font-family:"标楷体"; line-height:150%>这种用法的优点 是可灵巧应用样式於各标签中,但是缺点则是没有整篇文件的『统一性』. 二

CSS样式表视频教程:什么是媒体查询

网页制作Webjx文章简介:CSS样式表视频教程:什么是媒体查询. 媒体查询是今天CSS样式最令人兴奋的一个方面.它让我们在不改变页面内容的前提下,准确地适应各种设备的布局.下面的这个介绍解释了什么是媒体查询,如何使用它,如何针对iPhone写样式和怎么去创建灵活的布局. Css3 媒体查询 View more presentations from alonguo.