关于CSS选择器优先级的问题

<style>
  .preview p { 
    color: red;
  }
  .preview__black {
    color: black;
  }
</style>
<div class="preview">
  <p class="preview__black" aaa>我是一个p</p>
</div>

clipboard.png

clipboard.png

请问 标签选择器的优先级不是低于类(class)选择器吗?为什么此处p标签的颜色会是红色?

阅读 4.1k
9 个回答

因为.preview也是一个class标签 加上p 权重比.preview__black

准确说来

.preview p { 
  color: red; // 权重 0 1 1
}
.preview__black {
  color: black; // 权重 0 1 0
}

所以显示的红色

1、优先级: !important > 行内样式 > ID选择器 > 类选择器 > 标签选择器
2、权值:选择器的权值相加,大值优先

标签选择器:0,0,0,1
类选择器:  0,0,1,0
ID选择器:  0,1,0,0
内联样式:  1,0,0,0

.preview p 权值:10+1=11
.preview__black 权值:10 所以显示红色

因为你上面也有标签选择器啊,而且还加了个p,累加的

新手上路,请多包涵

.preview p是类加标签 权重大于单纯一个类的权重

权重叠加。
标签 1
类 10
id 100
.preview p的权重是10+1=11,.preview__black权重是10。

.preview .preview__black {
  color: black; 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏