美文网首页
CSS选择器优先性以及权重计算

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

作者: zx_lau | 来源:发表于2018-07-19 13:33 被阅读0次

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

    一、引入样式优先级

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

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

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

    二、样式声明优先级

    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;}   //生效

    相关文章

      网友评论

          本文标题:CSS选择器优先性以及权重计算

          本文链接:https://www.haomeiwen.com/subject/iyyppftx.html