CSS后代选择器可能的错误认识

Posted 十二分努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS后代选择器可能的错误认识相关的知识,希望对你有一定的参考价值。

一、关于类选择器的一个问题

    CSS代码:

.red { color: red; }
.green { color: green; }

html代码:
<div class="red"><div class="green"><p>1. 颜色是?</p></div></div>
<div class="green"><div class="red"><p>2. 颜色是?</p></div></div>
第一行和第二行文字颜色分别是 绿 红
原因:DOM越深的类名权重越高

二、类选择器→后代选择器

.red p { color: red; }
.green p { color: green; }
<div class="red"><div class="green"><p>1. 颜色是?</p></div></div>
<div class="green"><div class="red"><p>2. 颜色是?</p></div></div>
第一行和第二行文字颜色分别是  绿 绿
原因:祖先选择器对应DOM无论多深多浅都是同一级别的,而最终起作用的是选择器声明在CSS样式中的顺序,即优先显示后面的CSS声明

三、not选择器→后代选择器

:not(.green)  p { color: red; }
.green p { color: green; }
<div class="red"><div class="green"><p>1. 颜色是?</p></div></div>
<div class="green"><div class="red"><p>2. 颜色是?</p></div></div>
第一行和第二行文字颜色分别是  绿 绿
 

以上是关于CSS后代选择器可能的错误认识的主要内容,如果未能解决你的问题,请参考以下文章

css选择器的1.5 子选择器

CSS系列之后代选择器子选择器和相邻兄弟选择器

css后代选择器和子选择器的区别

在css中 比较 后代选择器和相邻选择器有啥区别 设计一个示例

CSSCSS 特性 ③ ( CSS 优先级 | 权重叠加计算公式 )

jQuery/CSS 后代选择器选择太多