当前位置: 首页 > Web前端 > CSS

前端面试题:CSS中的选择器权重

时间:2023-03-31 13:14:07 CSS

CSS中选择器优先级的权重计算先看一段代码,如下:hello

在上面的代码中,a标签中的文字最终的颜色是什么?了解CSS选择器优先级规则的童鞋都知道,CSS中的优先级顺序是:ID选择器>类选择器>标签选择器所以,对于上面代码的颜色,大家会选择#boxa{color:green;}绿色的。这个答案是正确的。如果我们从style标签中删除这条规则,a标签文本的颜色应该是什么?棕色的?还是黄金?哪一个?答案是:棕色。a{color:red}和pa{color:yellow;}的优先级肯定没有其他两项高,所以不用考虑。在[class="box"]a和.boxa中,比较后者的顺序后,之前的样式会被覆盖,所以颜色为棕色。这可能是某些人的答案,我不得不说这是错误的。那么如果是这样呢?<样式>#box{颜色:绿色;}你好

不用说了,大家都知道style会用到="color:red;"属性定义的颜色是红色。那么,css遵循的具体规则是什么?第0类权重计算规则:!important,大于任何其他设置。第一类:表示行内样式,如:style="",权重为1000。第二类:表示一个ID选择器,如:#content,权重为0100。第三类:代表类、伪类和属性选择器,如.content,权重为0010。第四类:表示类型选择器和伪元素选择器,如divp,权重为0001。第五类:通配符、子选择器、相邻选择器等。如*、>、+,权重为0000。第六类:继承风格没有重量。计算规则!important和内联样式style都不合理。只要!important存在,!important的优先级最高;如果不存在!important且样式存在,则样式具有最高优先级;其余“ID”、“类、伪类和属性”、“元素类型和伪元素”分别对应权重值(0-a-b-c)中的a/b/c;计算方法如下:*/*a=0b=0c=0->specificity=0-0-0-0*/LI/*a=0b=0c=1->specificity=0-0-0-1*/ULLI/*a=0b=0c=2->特异性=0-0-0-2*/ULOL+LI/*a=0b=0c=3->特异性=0-0-0-3*/H1+*[REL=up]/*a=0b=1c=1->特异性=0-0-1-1*/ULOLLI.red/*a=0b=1c=3->specificity=0-0-1-3*/LI.red.level/*a=0b=2c=1->specificity=0-0-2-1*/#x34y/*a=1b=0c=0->特异性=0-1-0-0*/#s12:not(FOO)/*a=1b=0c=1->特异性=0-1-0-1*/继承的样式没有权重,与任何其他类型相比具有较低的权重。【参考】CSS选择器特异性