New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[css] 第23天 说说CSS的优先级是如何计算的? #79
Comments
发现之前已经思考了这个问题,今天刚好回顾复习一下。 以下是回答: 选择器种类严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用。而 在标签内写入 三种基本的选择器类型 伪类,属性选择器特指度等同于类 扩展选择器 特指度-优先级计算我们需要引入一个概念——特指度(specificity)。特指度表示一个css选择器表达式的重要程度,可以通过一个公式来计算出一个数值,数越大,越重要。
即,针对一个css选择器表达式,遇到一个id就往特指度数值中加100,遇到一个class就往特指度数值中加10,遇到一个element就往特指度数值中加1。 下面举几个css表达式的特指度计算结果,大家也自己算一算,是不是对的: 还有一个重点要注意: 后代选择器的定位原则在这里介绍一下对于后代选择器,浏览器是如何查找元素的呢? 浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如 简洁、高效的CSS所谓高效的CSS就是让浏览器在查找style匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写CSS犯一些低效错误: ◆不要在ID选择器前使用标签名 ◆不要再class选择器前使用标签名 p.red{color:red;}
span.red{color:#ff00ff} 如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写。 ◆尽量少使用层级关系 ◆使用class代替层级关系 参考文章: |
css的优先级,还有另外的判定。在css的计算规则中,不仅关注元素的继承、元素声明的特殊性和元素本身来源。这些都是会影响一个css的优先级的判断。并不是说id选择器就一定是最优先,可能还有其他更高级的排序。 |
就像楼上兄弟说的,优先级计算中受到影响的因素很多,常用的来说就是:
|
!important>内联>id>class>tag>通配符 |
!important > 内联样式(1000) > id 选择器(100) > class 选择器(10) > tag(1) > * 当有多个选择器在一起时,权重相加计算。 对于 CSS 选择器的写法不建议超过 3 层。 |
!important > 内联样式 > ID > CLASS > element > * |
!important>id>class>tag>* |
!important > ID选择器 > 类选择器,属性选择器,伪类 > 类型选择器,伪元素 |
!import > 内联 > id > class > tag > * >继承样式 |
CSS的优先级是通过计算选择器的特定权重来确定的。当多个规则应用于同一个元素时,CSS会根据选择器的优先级来确定应用哪个规则。 以下是CSS优先级的计算规则,按照从高到低的顺序: 0.!important
如果多个规则具有相同的优先级,则后面出现的规则将覆盖前面的规则。 需要注意的是,内联样式的优先级最高,但是它的作用范围仅限于单个元素。如果多个选择器应用于同一个元素,则根据权重来决定哪个样式将被应用。 |
1 similar comment
CSS的优先级是通过计算选择器的特定权重来确定的。当多个规则应用于同一个元素时,CSS会根据选择器的优先级来确定应用哪个规则。 以下是CSS优先级的计算规则,按照从高到低的顺序: 0.!important
如果多个规则具有相同的优先级,则后面出现的规则将覆盖前面的规则。 需要注意的是,内联样式的优先级最高,但是它的作用范围仅限于单个元素。如果多个选择器应用于同一个元素,则根据权重来决定哪个样式将被应用。 |
第23天 说说CSS的优先级是如何计算的?
The text was updated successfully, but these errors were encountered: