Css的优先权问题

看这篇文章之前,对这个问题一直没深入研究,导致有时候遇到一些问题会很麻烦,看到这篇文章让我茅塞顿开,转帖回来保存一下以便今后复习。

发现很多朋友对 CSS 的优先权不甚了解,规则很简单。需要说明的一点,如果你的样式管理需要深层判断 CSS 的优先权,更应反思自己的 CSS 代码,是否合理?是否优化?

CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。

Specificity 具体的计算规则:

  • 元素的 style 样式属性,加 1,0,0,0。
  • 每个 ID 选择符(#id),加 0,1,0,0。
  • 每个 class 选择符(.class)、每个属性选择符(例 [attr=”"] )、每个伪类(例 :hover),加 0,0,1,0。
  • 每个元素或伪元素(例 :firstchild)等,加 0,0,0,1。
  • 其他选择符(例 全局选择符 *,子选择符 >),加 0,0,0,0。

最后逐位相加数字串,得到最终的 Specificity 值,按照从左到右的顺序逐位比较。

除了 Specificity 还有一些其他规则:

  • !important 声明的规则高于一切,如果 !important 声明冲突,则比较优先权。
  • 如果优先权一样,则按源码中“后来者居上”的原则。
  • 由继承而得到的样式属性不参与 specificity 的计算,低于一切其他规则(例 全局选择符 * )。

范例分析:

h1 {color: red;}/* 只有一个普通元素加成,结果是 0,0,0,1 */body h1 {color: green;}/* 两个普通元素加成,结果是 0,0,0,2 *//*0,0,0,1 小于 0,0,0,2 ,后者胜出*/

h2.grape {color: purple;}/* 一个普通元素、一个class选择符加成,结果是 0,0,1,1*/h2 {color: silver;}/*一个普通元素,结果是 0,0,0,1 *//*0,0,1,1 大于 0,0,0,1 ,前者胜出*/

html > body table tr[id=”totals”] td ul > li {color: maroon;}/* 7个普通元素、一个属性选择符、两个其他选择符(子选择符 >),结果是0,0,1,7 */li#answer {color: navy;}/* 一个ID选择符,一个普通选择符,结果是0,1,0,1 *//*0,0,1,7 小于 0,1,0,1,后者胜出*/

Css的优先权问题

时间: 2024-07-30 04:33:32

Css的优先权问题的相关文章

CSS读书笔记(1)

(1)CSS选择器优先权选择. 优先权从大到小的选择如下: 标有!important关键字声明的属性 HTML中的CSS样式属性 <div style="color:red"></div> 作者编写的CSS文件 <link href='xx.css'> 用户浏览网页在浏览器中设置的样式 浏览器默认的样式 对于ID选择器.类选择器等,其优先级从大到小分别是: 直接在标签中写入样式<div style="color:red"&g

CSS——优先级

转自:http://www.planabc.net/2008/05/06/css_specificity/ CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权. Specificity 具体的计算规则: 元素的 style 样式属性,加 1,0,0,0. 每个 ID 选择符(#id),加 0,1,0,0. 每个 class 选择符(.class).

学无止境的CSS(xHTML+CSS技巧教程资源大全)

本文里面收集一些有关CSS的技巧.教程.工具和观点等,其中一些你也许早就运用的炉火纯青,也可能有的你听都没听说过.不管是新手还是高手,大家都继续学习吧. 一,Web 标准 要玩游戏,就得先了解规则.要学CSS,就应该先了解一下Web标准.尽管看上去不是必须的(我在学CSS之前,根本不知道也不想知道Web标准是 个啥玩意儿).应该说,你是否学Web标准,跟你是否能学会CSS没有什么关系,但跟你能写出什么样的CSS,以及XHTML或其它代码,跟你能做出什么 质量的网页有很大的关系. 其实我自己对We

css语法规则屏幕自适应及条目应用优先权

1. !important 提升指定样式条目的应用优先权. div { color: #f00 !important; color: #000;}在上述代码中,IE6及以下浏览器div的文本颜色为#000,!important并没有覆盖后面的规则:其它浏览器下div的文本颜色为#f00 2.可以让屏幕自适应的方法: /* 样式代码导入 样式文件 */ 第一种方式: <link media="screen and (width:800px)" rel="styleshee

我给女朋友讲编程CSS系列(1) –添加CSS样式的3种方式及样式表的优先权

如果说,原生态就是美,那么,我们就没有必要穿衣打扮. 网页是什么? 说白了,网页就是一堆[html标签]有序的搭配,让[CSS属性值]整整容,请[Javascript语言]处理一下事件. 一个人的整容效果,很大程度上取决于Ta本人,也就是原材料,对网页来说,原材料就是html标签,因此设计优秀的html标签结构十分重要. 整容医生的作用也至关重要,割双眼皮,整容医生的基本功,不同医生割出来的效果不同. 作为一个网页设计师,我们是不是应该追求完美,尽最大努力,让网页漂亮一些. 我知道,我们往往自称

CSS 之怀疑自己的审美 2 (Day50)

阅读目录 伪类 选择器的优先级 css 属性操作 一.伪类 anchor伪类:专用于控制链接的显示效果 ''' a:link(没有接触过的链接),用于定义了链接的常规状态. a:hover(鼠标放在链接上的状态),用于产生视觉效果. a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接. a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态. 伪类选择器 : 伪类指的是标签的不同状态: a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

css简单了解

今天主要是说一下css样式表!HTML结合他使用可以是HTML页面变得很绚丽多彩! 先简单介绍一下为什么要使用CSS(Cascading Style Sheets)层叠样式表! 1.因为CSS样式表可以定义HTML 元素如何显示 2.所有主流浏览器都支持CSS样式表 3.样式表极大地提高了工作效率 4.并且,多重样式表可以层叠为一个 那如果当同一个HTML元素被不只一个样式定义的时候,会使用哪一个样式呢? 一般而言,所有样式会根据下面的规则层叠于一个新的虚拟样式表,其中第4条拥有最高优先权. 1

css的学习

第一天. css 1.知道 内联 内部 外部 的优先权 2.css的语法 3.id 选择器 以及 类选择器 和属性选择器 4.对图片  长 宽 的编辑  调整图片 5.通过内部 对整个页面 文字  颜色  的编辑 主要讲解了 一级.内联 style=""  权值1000  优先权最高 二级 ID选择器 #content, 权值0100 三级 类 伪类选择器  contenr 权值 0010 四级 元素选择器  div , p, 权值 0001 熟悉嵌套的方法 和优先级 <styl

Css的样式的概述和关于background的用法

Css对于前端来说,就像是一件衣服一样,会让你的页面更加生动形象的展现在用户面前,是用户感觉眼前一亮.一个好的css的编写会带给你不同的视觉享受,同时让你的页面大放异彩. 样式通常保存在外部的 .css 文件中.通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观.由于允许同时控制多重页面的样式和布局,CSS 可以称得上 WEB 设 计领域的一个突破.样式表允许以多种方式规定样式信息.样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在