CSS 选择器中的空格是啥意思?即 .classA.classB 和 .classA .classB 有啥区别?

Posted

技术标签:

【中文标题】CSS 选择器中的空格是啥意思?即 .classA.classB 和 .classA .classB 有啥区别?【英文标题】:What does a space mean in a CSS selector? i.e. What is the difference between .classA.classB and .classA .classB?CSS 选择器中的空格是什么意思?即 .classA.classB 和 .classA .classB 有什么区别? 【发布时间】:2010-11-10 17:05:32 【问题描述】:

这两个选择器有什么区别?

.classA.classB 
  border: 1px solid;


.classA .classB 
  border: 1px solid;

【问题讨论】:

【参考方案1】:

.classA.classB 指的是同时具有 A 类和 B 类的元素 (class="classA classB");而.classA .classB 指的是一个带有class="classB" 的元素,它是一个带有class="classA" 的元素的后代。

编辑:参考规范:Attribute Selectors(参见第 5.8.3 节类选择器)

【讨论】:

【参考方案2】:

这样的样式更为常见,并且可以针对嵌套在“classA”类的任何类型元素中的任何类型的“classB”类元素。

.classA .classB 
  border: 1px solid; 

它可以工作,例如,在:

<div class="classA">
  <p class="classB">asdf</p>
</div>

然而,这个针对任何类型的元素,既是“classA”类,又是“classB”类。这种样式不太常见,但在某些情况下仍然有用。

.classA.classB 
  border: 1px solid; 

这适用于这个例子:

<p class="classA classB">asdf</p>

但是,它对以下内容没有影响:

<p class="classA">fail</p>
<p class="classB">fail</p>

(请注意,当一个 html 元素有多个类时,它们之间用空格分隔。)

【讨论】:

显示失败的案例很有帮助。【参考方案3】:

.classA.classB 表示将选择具有两个类名的元素,而.classA .classB 表示仅选择classA 内的类名为classB 的元素。

【讨论】:

这是对的,但这个问题在十年前就已经被正确回答了;它并不需要一个新的答案。

以上是关于CSS 选择器中的空格是啥意思?即 .classA.classB 和 .classA .classB 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

CSS 属性选择器中的“i”是啥意思?

/deep/ 和 ::shadow 在 CSS 选择器中是啥意思?

星号 (*) 在 CSS 选择器中的作用是啥?

photoshop中拾色器中HSBRGB是啥意思?

在任务管理器中的专用工作集是啥意思

CSS的问题!