美文网首页CSS
CSS选择器权重计算方式

CSS选择器权重计算方式

作者: 蛋黄肉 | 来源:发表于2017-08-02 22:24 被阅读20次

    CSS选择器优先级

    概念:

    浏览器通过优先级来判断哪一些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级是基于不同种类选择器组成的匹配规则。

    优先级是如何计算的?
    由高到低分别是
    1. 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式
    2. 作为style属性写在元素标签上的内联样式
    3. id选择器
    4. 类选择器
    5. 伪类选择器
    6. 属性选择器
    7. 标签选择器
    8. 通配符选择器
    9. 浏览器自定义
    复杂场景时
    • 行内样式 <div style="xxx"></div> ==> a
    • ID 选择器 ==> b
    • 类,属性选择器和伪类选择器 ==> c
    • 标签选择器、伪元素 ==> d
      每个位置上的数字越大,选择器的级别就越高,如果全部相等的时候,写在后面的选择器权重高于写在前面的选择器。abcd的权重依次递减。
    测试
    *             {}  /* a=0 b=0 c=0 d=0 -> 0,0,0,0 */
    p             {}  /* a=0 b=0 c=0 d=1 -> 0,0,0,1 */
    a:hover       {}  /* a=0 b=0 c=0 d=2 -> 0,0,0,2 */
    ul li         {}  /* a=0 b=0 c=0 d=2 -> 0,0,0,2 */
    ul ol+li      {}  /* a=0 b=0 c=0 d=3 -> 0,0,0,3 */
    h1+input[type=hidden]{}  /* a=0 b=0 c=1 d=2 -> 0,0,1,1 */
    ul ol li.active   {}  /* a=0 b=0 c=1 d=3 -> 0,0,1,3 */
    #ct .box p        {}  /* a=0 b=1 c=1 d=1 -> 0,1,1,1 */
    div#header:after  {}  /* a=0 b=1 c=0 d=2 -> 0,1,0,2 */
    style=""          /* a=1 b=0 c=0 d=0 -> 1,0,0,0 */
    

    在这个测试中没有写@import,在正常情况下,不要使用import,他会让我们引用的CSS文件中的样式覆盖当前的样式。

    相关文章

      网友评论

        本文标题:CSS选择器权重计算方式

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