CSS - 优先级

CSS三大特性 —— 继承、 优先级、层叠

 

  • 继承:即子类元素继承父类的样式。
  • 优先级:是指不同类别样式的权重比较。
  • 层叠:是说当数量相同时,通过层叠(后者覆盖前者)的样式。


CSS选择符(选择器)分类

  1. 标签选择器(如:body,div,p,ul,li)
  2. 类选择器(如:class="head",class="head_logo")
  3. ID选择器(如:id="name",id="name_txt")
  4. 全局选择器(如:*号)
  5. 组合选择器(如:.head .head_logo,注意两选择器用空格键分开)
  6. 后代选择器 (如:#head .nav ul li 从父集到子孙集的选择器)
  7. 群组选择器 div,span,img {color:Red} 即具有相同样式的标签分组显示
  8. 继承选择器(如:div p,注意两选择器用空格键分开)
  9. 伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、hover、active)
  10. 字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)
  11. 子选择器 (如:div>p ,带大于号>)
  12. CSS相邻兄弟选择器器 (如:h1+p,带加号+)


CSS优先级

当两个规则都作用到了同一个html元素上时,如果定义的属性有冲突,那么应该用谁的值的,CSS有一套优先级的定义。

一、第一种理解方式:

(1)不同级别

  • 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式
  • style属性写在元素内的样式
  • id选择器
  • 类选择器
  • 标签选择器
  • 通配符选择器
  • 浏览器自定义或继承

    总结排序:!important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性

(2)同一级别

  • 同一级别中后写的会覆盖先写的样式。上面的级别还是很容易看懂的,但是有时候有些规则是多个级别的组合,像这样。
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div.test{
            background-COLOR:#a00;
            width:100px;
            height: 100px;
        }

        .test.test2{
            background-COLOR:#0e0;
            width:100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="test test2"></div>
</body>
</html>

到底 div 是应用那条规则呢,有个简单的计算方法(经园友提示,权值实际并不是按十进制,用数字表示只是说明思想,一万个 class 也不如一个 id 权值高)

  • 内联样式表的权值为 1000
  • ID 选择器的权值为 100
  • Class 类选择器的权值为 10
  • HTML 标签选择器的权值为 1

我们可以把选择器中规则对应做加法,比较权值,如果权值相同那就后面的覆盖前面的了,div.class的权值是1+10=11,而.test1 .test2的权值是10+10=20,所以div会应用.test1 .test2变成绿色。

二、第二种理解方式:

CSS优先级:是由四个级别和各级别的出现次数决定的。
四个级别分别为:行内选择符、ID选择符、类别选择符、元素选择符。
优先级的算法:
每个规则对应一个初始"四位数":0、0、0、0

  • 若是 行内选择符,则加1、0、0、0
  • 若是 ID选择符,则加0、1、0、0
  • 若是 类选择符/属性选择符/伪类选择符,则分别加0、0、1、0
  • 若是 元素选择符/伪元素选择符,则分别加0、0、0、1

算法:将每条规则中,选择符对应的数相加后得到的”四位数“,从左到右进行比较,大的优先级越高

三、注意事项:
①、!important的优先级是最高的,但出现冲突时则需比较“四位数“
②、优先级相同时,则采用就近原则,选择最后出现的样式
③、继承得来的属性,其优先级最低
!important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
*css选择器使用强烈建议采用低权重原则,利于充分发挥css的继承性,复用性,模块化、组件化。

四、CSS选择器的解析原则:

以前一直认为选择器的定位DOM元素是从左向右的方向,查看了网上的相关资料之后才发现原来自己一直都是错的。郑重的声明选择器定位DOM元素是从右往左的方向,这样的好处是尽早的过滤掉一些无关的样式规则和元素 。为什么CSS选择器是从右往左解析?点击打开链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML的CSS样式优先级是指当多个CSS规则同时应用到同一个元素上时,决定哪个规则的样式优先显示的规则。CSS样式优先级由高到低的顺序如下: 1. 内联样式(Inline Style):直接写在HTML元素的style属性中的样式具有最高的优先级。例如: ```html <p style="color: red;">这是红色文字</p> ``` 2. 内部样式表(Internal Style Sheet):在HTML文档头部的`<style>`标签中定义的样式表具有次高的优先级。例如: ```html <head> <style> p { color: blue; } </style> </head> <body> <p>这是蓝色文字</p> </body> ``` 3. 外部样式表(External Style Sheet):通过`<link>`标签引入的外部CSS文件具有比内部样式表低的优先级。例如: ```html <head> <link rel="stylesheet" href="styles.css"> </head> <body> <p>这是从外部样式表定义的样式</p> </body> ``` 4. 浏览器默认样式(Browser Default Styles):浏览器默认给定的样式是最低优先级的。如果没有定义任何样式,元素将应用浏览器默认样式。 5. 选择器特殊性(Selector Specificity):如果多个规则都是通过相同的选择器选中同一个元素,那么会根据选择器的特殊性来决定优先级。特殊性的计算规则是:ID选择器的特殊性最高,类选择器和属性选择器次之,标签选择器和伪类选择器再次之,通用选择器和伪元素选择器最低。例如: ```html <style> p { color: red; } .my-class { color: blue; } </style> <p class="my-class">这个段落的颜色将是蓝色,因为类选择器的特殊性比标签选择器高</p> ``` 需要注意的是,当样式优先级相同时,后定义的样式会覆盖前面定义的样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值