CSS选择器间空格的含义是什么?有无空格的差异解析
嘿,这个问题戳中了CSS选择器里一个很容易混淆的点,我来给你掰扯清楚:
无空格的多类选择器:比如你代码里的
.animation-element.slide-left.testimonial,这是在匹配同时拥有这三个类名的单个元素。举个例子,只有像<div class="animation-element slide-left testimonial">这样的标签才会被选中——三个类必须同时出现在同一个HTML元素的class属性里,顺序不影响,但缺一不可。带空格的后代组合器:而
.animation-element.slide-left.testimonial .content里的空格,是在告诉浏览器:先找到符合前面多类选择器的元素,然后选中它**所有后代(不管嵌套多少层)**里带有content类的元素。比如前面那个div里的<p class="content">、<div class="inner"><span class="content"></span></div>都会被匹配到。
举个反例帮你理解:如果把空格去掉写成 .animation-element.slide-left.testimonial.content,那它就变成了匹配同时拥有这四个类名的单个元素,和原来的选择逻辑完全是两回事,几乎不会匹配到任何元素(除非你特意给某个标签加了四个类)。
简单总结:无空格是“且”的关系(同一个元素同时满足多个类),空格是“包含”的关系(父元素满足条件,选中它的后代元素)。
内容的提问来源于stack exchange,提问作者Thomas Helsing

