关于CSS优先级问题

作者: 爱吃荔枝的张长弓 | 来源:发表于2018-10-12 17:49 被阅读1次

之前遇到这种问题一直简单粗暴的使用 !import,今天在老大的指引下才发现这里面也大有文章,下面梳理一下我自己的理解。

首先,css优先级顺序:内联样式 > id选择器 > 类选择器 = 属性选择器 = 伪类 > 元素选择器 > 通用选择器(*) > 继承的样式;

然后具体先解释一下这些选择器都是什么鬼,当然css基础好的童鞋可以忽略这一段。

内联样式:<div style=“color:’red’;">内联样式</div>

Id选择器: <div id=“test">Id选择器</div>    #test {color:red;}

类选择器:<div class=“test">类选择器</div>    .test {color:red;}

属性选择器:<div content="属性选择器">属性选择器</div>   [content] {color:red;}

                      <h2 title="Hello world">Hello world</h2> [title] {color:red;}

                      <a href="[http://w3school.com.cn](http://w3school.com.cn)">W3School</a>   [href]{font-size:40px}

伪类:<p><b><a href="/index.html" target="_blank">这是一个链接。</a></b></p>

           <p><b>注释:</b>在 CSS 定义中,a:hover 必须位于 a:link 和 a:visited 之后,这样才能生效!</p>

           <p><b>注释:</b>在 CSS 定义中,a:active 必须位于 a:hover 之后,这样才能生效!</p>

           <style type="text/css">

                a:link {color: #FF0000}

                a:visited {color: #00FF00}

                a:hover {color: #FF00FF}

                a:active {color: #0000FF}

            </style>

 元素选择器:<h1>这是 heading 1</h1>

                     <h2>这是 heading 2</h2>

                      <p>这是一段普通的段落。</p>

                      html {color:black;}

                      p {color:blue;}

                      h2 {color:silver;}

 通用选择器:<div class=“test">通用选择器</div>    *.test {color:red;}

  然后我们来了解一下优先级的计算方法:

         a、用a表示选择器中ID选择器出现的次数

      b、用b表示类选择器,属性选择器和伪类选择器出现的总次数。

      c、用c表示标签选择器、伪元素选择器出现的总次数

      d、忽略通用选择器

      e、然后计算a*100+b*10+c的大小,这就是优先级了。

权重:内联样式1000》id选择器100》class选择器10》标签选择器1

总结:ID选择器「如:#header」,Class选择器「如:.foo」,属性选择器「如:[class]」,伪类「如::link」,标签选择器「如:h1」,伪元素「如::after」,选择器「*」

    最后我们再来了解一下为什么我常用的!important没有列入优先级中,因为官方认为!import和优先级没一点关系。

  不建议使用!import
  • Never 绝不要在全站使用!import。

  • Only 只在需要覆盖全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定页面中使用 !important

  • Never 永远不要在你的插件中使用 !important

  • Always 要优先考虑使用样式规则的优先级来解决问题而不是 !important

选择元素时尽量不要多选,不要放宽选择器的范围。因为范围越小,越具有针对性,优先级越高。

  但是什么时候需要使用!import呢?

 使用!import的场合也是有的,但是是在没有别的解决方案的时候。

比如需要覆盖内联样式,因为内联样式的优先级最高,只能用!import去覆盖内联样式。

相关文章

  • 关于CSS优先级问题

    之前遇到这种问题一直简单粗暴的使用 !import,今天在老大的指引下才发现这里面也大有文章,下面梳理一下我自己的...

  • 关于css中优先级问题

    最近在做页面的时候,遇见一个这样的问题。使用semantic-ui的时候,运用其卡片的ui设计,但是,向其中添加阴...

  • css选择器优先级以及photoshop快捷键

    css选择器优先级 CSS选择器的优先级:作用的元素一样,样式一样,就会有优先级问题,当优先级相同时,一旦发生重...

  • 前端复习第二周

    主要复习CSS,style来引入css,link来外联css文件 优先级标签内css优先级 > hand内部css...

  • CSS要点记录

    CSS要点记录 CSS 指层叠样式表 (Cascading Style Sheets) 多种样式时的优先级问题 数...

  • 笔记 - CSS基础

    浏览器与支持特性 caniuse.com 关于CSS优先级: 一般情况下,优先级如下:(外部样式)External...

  • css优先级问题

    样式的优先级 多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就...

  • CSS优先级问题

    想要自己进行修改bootstrap又不能修改源文件,只能用自己的css文件进行覆盖样式。所以就必须要了解引入优先级...

  • CSS样式选择器的权重之重塑三观

    关于css权重,前端开发者大概能想到:!important优先级最高,内联样式次之,然后是css样式文件显示最后的...

  • css选择器的优先级                      

    css选择器的使用条件:当样式冲突时,就会有优先级问题。 其中css选择器可以分为:1.通配选择器,其优先级为0;...

网友评论

    本文标题:关于CSS优先级问题

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