css权重与常见布局(1)

哈希根系
• 阅读 2251

CSS的选择器类型与权重值

  1. 通配符选择器 权重值为 0
  2. 元素选择器,和伪元素(例如::before) 权重值为 1
  3. 类选择器(class),属性选择器,伪类(:hover) 权重值为 10
  4. ID选择器 权重值为 100
  5. 行内样式 权重值为 1000
  6. !important 权重值比前5个都大,可以说无穷大

tips:

  • !important的权重最大,但是它可以被权重更大的!important所覆盖
  • 行内样式 总会覆盖外部样式表的任何样式(除了!important)
  • 几种权重值不同的选择器作用在同一个元素上,以权重值大的css样式规则生效
  • 几种权重值相同的选择器作用在同一个元素上,以后面出现的选择器的css样式规则生效
  • 无论使用多少个权重低的选择器够比不过一个权重值高的选择

如果有!important那么相加的那些无论多权重高就不管用,如果有max-height/max-width那么!important不管用,如果同时有min-height/min-width和 max-height/max-width,那么max-height/max-width的不管用

口诀:从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10,一个元素名,或者伪元素+1

min-height/min-width > max-height/max-width > !important > 行内样式 > ID选择器 > 类选择器、属性选择器、伪元素和伪类选择器 > 元素选择器 > 通用选择器

权重的计算方法

div p h3 ---> 0,0,0,3 所以此时h3标签的权重值为3, 因为div,p,h3这些都是标签选择器(权重值为1)

<div>
    <p>
        <h3>xxxx</h3>
    </P>
</div>

#par .sub h3 ---> 0,1,1,1 此时的h3标签的权重值为111=100+10+1 (依次类推)

<div id="par">
    <p class="sub"> 
        <h3>xxxx</h3>
    </P>
</div>

要注意的一点就是如前面说到的那样,数位没有进位: 0,0,0,5 + 0,0,0,5 = 0,0,0,10而不是0,0,1,0,所以不会存在10个div能赶上一个类选择器的情况。

实战例题(某厂前端工程师笔试题)

基于以下的HTML结构和CSS样式,文本Dijkstra的颜色是?

<ul class="authors" id="favorite">
    <li><span>Martin Fowler</span></li>
    <li id="related><span class="highlight">Dijkstra</span></li>
</ul> 

ul #related span {
    color:red;
}
#favorite .highlight{
     color:orange;
}
.highlight{
    color:black;
}

计算权重:
(1)ul #related span ---> 0,0,0,1 + 0,1,0,0 + 0,0,0,1 =0,1,0,2 ---> 102 red
(2) #favorite .highlight ---> 0,1,0,0 + 0,0,1,0 = 0,1,1,0 ---> 110 orange (权重最大)
(3) .highlight ---> 0,0,1,0 = 10 black

因为110 > 102 > 10 所以文本Dijkstra显示的 Orange这种颜色

点赞
收藏
评论区
推荐文章
晴空闲云 晴空闲云
3年前
JavaScript中选择器函数querySelector和querySelectorAll
选择器是Css非常强大的功能,早先一般是通过getElementById和getElementsByTagName来获取页面元素,在一些场景下就很不方便。后来DOM扩展出了SelectorAPI标准,其中SelectorAPILevel1包含了querySelector和querySelectorAll两个方法,可以通过Css选择器匹配页面元素。
菜园前端 菜园前端
2年前
常用CSS的选择器有哪些?
原文链接:选择器定义css选择器代表如何选中某个元素现实生活举例我们可以想象一个元素,其实就是一个人,那我该如何找到这个人呢?例如可以通过id选择器的方式,就像是通过身份证号码找到TA。也可以通过标签选择器找到TA,就像是通过喊TA的名字的方式。类选择器c
菜园前端 菜园前端
2年前
考考你CSS的选择器权重
原文链接:选择器权重选择器权重划分代表有多个选择器同时选中同一个元素时,应该以谁的为准,这里就会涉及到权重的问题。现实生活举例假设你的好朋友小明和路人小红同时掉水里,你先救谁?那你可能会先救小明,因为小明的优先级/权重比较高。基础案例在同一层级下同一层级代
Stella981 Stella981
3年前
Less 嵌套
本节我们学习Less中的嵌套,嵌套应该很容易理解,HTML语言中就支持标签的嵌套。我们在使用CSS时,如果想要为多层嵌套的元素设置样式,要么给元素加上一个类选择器或ID选择器,要么使用后代选择器。例如:.xkd{fontsize:14px;}.xkdp{lineheight:25
Wesley13 Wesley13
3年前
CSS基本语法及页面引用
css基本语法及页面引用(1)css基本语法css的定义方法是:选择器{属性:值;属性:值;属性:值;}选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值。代码示例:/css注释ctrlshift"/"/d
Wesley13 Wesley13
3年前
CSS基本用法介绍
CSS介绍css定义如何显示HTML元素.当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染).CSS语法css实列每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。css注释/这是注释/CSS的几种引入方
Stella981 Stella981
3年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Wesley13 Wesley13
3年前
020_CSS3
目录如何学习CSS什么是CSS发展史快速入门css的优势三种CSS导入方式拓展:外部样式两种写法选择器基本选择器层次选择器结构伪类选择器属性选择器美化网页元素为什么要
Stella981 Stella981
3年前
Seleinum_CSS定位方式
转载:https://www.cnblogs.com/longronglang/p/9144661.htmlCSS选择器:常见符号:表示id选择器.表示class选择器\表示子元素,层级一个空格也表示子元素,但是是所有的后代子元素,相当于xpath中的相对路径一、css:属性定
Wesley13 Wesley13
3年前
CSS基础_CSS样式的几种书写形式
1.内嵌式将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义,其基本语法格式如下:<head<styletype"text/CSS"标签名/选择器{属性1:属性值1;属性2:属性值2;属性3:属性值3;
Stella981 Stella981
3年前
CSS前端经典面试题及解析——小白入门必备
1.CSS选择器的优先级是如何计算的?浏览器通过优先级规则,判断元素展示哪些样式。优先级通过4个维度指标确定,我们假定以a、b、c、d命名,分别代表以下含义:1.a表示是否使用内联样式(inlinestyle)。如果使用,a为1,否则为0。2.b表示ID选择器的数量。3.c表示类选择器、属性
哈希根系
哈希根系
Lv1
爱情真的可以让人一下子快乐一下子伤心。
文章
5
粉丝
0
获赞
0