CSS选择器优先性以及权重计算

样式根据引入和声明需要分开介绍,一般来说分为引入样式优先级声明样式优先级

一、引入样式优先级

引入样式优先级一般是在外部样式、内部样式、内联样式之间应用同一个样式的情况是使用, 优先级如下:

外部样式 | 内部样式 < 内联样式

外部样式和内部样式,最后出现的优先级最高。

二、样式声明优先级

a.选择器类型

    ①、ID  #id

    ②、class  .class

    ③、标签  p

    ④、通用  *

    ⑤、属性  [type="text"]

    ⑥、伪类  :hover

    ⑦、伪元素  ::first-line

    ⑧、子选择器、相邻选择器

b、选择器所占权重

    ①:代表内联样式,如: style=””,权值为1000。

    ②:代表ID选择器,如:#content,权值为100。

    ③:代表类,伪类和属性选择器,如.content,权值为10。

    ④:代表类型选择器和伪元素选择器,如div p,权值为1。    

    ⑤:通配符、子选择器、相邻选择器等的。如*、>、+,权值为0。

    ⑥:继承的样式没有权值。

权值计算示例

c、!important

    !important是选择器优先级比较特殊的存在。

    !important 的作用是提升优先级,换句话说。加了这句的样式的优先级是最高的(比内联样式的优先级还高)。

    加了!important的样式如果要覆盖的话,只能在后面继续加important,所以一般不建议使用。

    table td {height:50px!important;}

    .myTable td{height:50px!important;}

    #myTable td{height:50px!important;}   //生效

d、就近原则

    当权值相同的情况下怎么办呢,这个时候就要看就近原则了。

    css有4种引入方式,除了行内式以外,后设置的值会覆盖前面设置的, 因为剩余三种引入方式都是在头部引入,后设置也就离目标属性更近,   也就是就近原则了。

e、基于形式的优先级

    优先级是基于选择器的形式进行计算的。在下面的例子中,尽管选择器*[id="foo"] 选择了一个ID,但是它还是作为一个属性选择器来计算自身的优先级。

    *#foo{color:green;}     //生效

    *[id="foo"] {color:purple;}

f、无视DOM树的距离

    body h1 {color:green;}

    html h1 {color:purple;}   //生效

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 887评论 0 1
  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 3,214评论 0 40
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,101评论 0 1
  • 学会使用CSS选择器熟记CSS样式和外观属性熟练掌握CSS各种选择器熟练掌握CSS各种选择器熟练掌握CSS三种显示...
    七彩小鹿阅读 6,351评论 2 66
  • 我看到一个穿制服的人高举着手示意停止,他认真严肃,我以前像那个维持秩序的人,在一片我认为的混乱中,我要维持秩序,但...
    储晴whj阅读 93评论 0 0