CSS继承优先级问题

请输入图片描述
之前问题没有描述清楚。
我的意思是如果权重相同该得到哪个样式?

阅读 6.9k
8 个回答

反对@nightire简单实用的答案,哈哈哈。

css层叠的时候考虑3点:继承,特殊性和来源。这里只看特殊性:

内联样式:1,0,0,0
id选择器:0,1,0,0
class选择器,属性选择器,伪类:0,0,1,0
元素选择器,伪元素:0,0,0,1
通配选择器:0,0,0,0
继承值:无特殊性

计算时特殊性就是简单的把各位上的数字相加,然后从第一位开始比较。只有前一位比较不出时才会比较下一位,换言之,0,1,0,0特殊性高于0,0,10,100。

通配选择器(*)的0,0,0,0特殊性高于无特殊性的继承值。

!important其实和特殊性无关,它属于重要声明。css层叠时,所有的重要声明和非重要声明会分开进行层叠。如果重要声明和非重要声明冲突,会应用重要声明的样式。

最后,回答题主的问题,如果两个规则的来源,特殊性完全相同,会应用后出现的规则。

这里的意思是多一个元素+1,一个元素是10,加权数越高越优先。
这里没有对id进行区分,按照他这个说法id的加权数应该高于class,但是这么算又乱了。。。。
总之大体的概念就是,选择的越细优先级越高,层级越多优先级越高,id高于class,实在搞不明白测一下就好了,不需要死记硬背

看到 ID 加 100
看到 Class 加 10
看到 TagName 加 1

权重就这么出来的,对了,看到 !important 加 1000

权重可不是这么加的啊。
比如,div.box1.box2....box101>div#box
你说,对于#box而言,.box1.box2....box101样式优先级大呢,还是#box优先级大。

样式优先级应当遵循就近原则。当然!important的权重是最大的。

作用在同一元素上,不同的css选择器,id优先级>class选择器>标签选择器
还有其他的属性选择器之类的,楼主可以测试下。

如果是样式继承的话,优先级遵循就近原则

ps:有一个比较奇怪的事情,就是类名个数超过256个,就能覆盖掉id选择器(针对的同一元素,不是100个哦)。

权重一样,哪个排在后面就用哪个样式,叠层样式表就是这样意思,后面的会把前面的叠盖,前提是后面的权重大于前面的,或者权重一样!
html

<div id="wrap">
    <div id="first">
        <div id="par">
            <div class="hh">test</div>
        </div>
    </div>
</div>

css

#wrap #par .hh{
    border:1px solid gery;
    width:80px;
}
#par .hh{
    width:120px;
}
#first #par .hh{
    width:100px;
    border:1px solid green;
}
#first .hh{
    width:140px;
}

#wrap #par .hh#first #par .hh权重一样,但由于#first #par .hh在后面,所以最后取的是#first #par .hh这条样式。

权重一样,哪个排在后面就用哪个样式。相当于覆盖,后来的自然将前面的样式覆盖掉了。

新手上路,请多包涵

层叠样式顾名思义,
当权重相同的时候,
后面的覆盖前面的。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏