Javascript 特定于目标的CSS类集

Javascript 特定于目标的CSS类集,javascript,html,css,Javascript,Html,Css,我的文档中有两个元素实例。一个只包含一类幻灯片,另一个包含一类幻灯片和幻灯片--current。下面是此标记的一个示例 <div class="slide slide--current"> <h2 class="title title--centered title--modifier">Slide 1</h2> <div class="text-block"> <p>text</p> </div&

我的文档中有两个元素实例。一个只包含一类
幻灯片
,另一个包含一类
幻灯片
幻灯片--current
。下面是此标记的一个示例

<div class="slide slide--current">
  <h2 class="title title--centered title--modifier">Slide 1</h2>
  <div class="text-block">
    <p>text</p>
  </div>
</div>

<div class="slide">
  <h2 class="title title--centered title--modifier">Slide 2</h2>
  <div class="text-block">
    <p>text</p>
  </div>
</div>

幻灯片1
正文

幻灯片2 正文


如果我想将
文本块
作为目标,当它将
slide--current
作为父对象时,我会使用
.slide--current>.text block
作为选择器但是如果我想将
文本块
作为目标,而它没有
幻灯片--current
我这样问是因为这两个元素都需要始终对它们应用类
幻灯片
。如果我使用
.slide.text block
样式将应用于
slide--current
,而它们不应该应用于此。这是
:not()
选择器的情况吗?

您可以使用伪选择器:

.slide:not(.slide--current) {
    // styling here
}
在您的情况下,只要.text块始终是.slide的直接子项:

.slide > .text-block {
    // Apply to all text blocks regardless of state of slide
}

.slide:not(.slide--current) > .text-block {
    // Only applied if parent slide is not current
}

通过阅读@Rounin的答案,您可能会获得相同的结果,并避免使用伪选择器,方法是颠倒您的思维过程,首先为所有文本块设置一些基本样式,然后在幻灯片处于当前状态时覆盖它们。

您可以使用伪选择器:

.slide:not(.slide--current) {
    // styling here
}
在您的情况下,只要.text块始终是.slide的直接子项:

.slide > .text-block {
    // Apply to all text blocks regardless of state of slide
}

.slide:not(.slide--current) > .text-block {
    // Only applied if parent slide is not current
}
通过阅读@Rounin的答案,你可能会得到同样的结果,并避免使用伪选择器,方法是颠倒你的思维过程,先为所有文本块设置一些基本样式,然后在幻灯片当前时覆盖它们

但是,如果我想将
文本块作为目标,而它没有
幻灯片--当前

这是一堂如何在CSS中以正确的顺序使用级联的课

.text-block {

BASIC .text-block STYLES

}

.slide .text-block {

ADDITIONAL .slide .text-block STYLES

}

.slide--current .text-block {

ADDITIONAL .slide--current .text-block STYLES

}
基本上,您从核心样式开始,随着上下文变得越来越具体,您会逐渐添加

但是,如果我想将
文本块作为目标,而它没有
幻灯片--当前

这是一堂如何在CSS中以正确的顺序使用级联的课

.text-block {

BASIC .text-block STYLES

}

.slide .text-block {

ADDITIONAL .slide .text-block STYLES

}

.slide--current .text-block {

ADDITIONAL .slide--current .text-block STYLES

}

基本上,您从核心样式开始,随着上下文变得越来越具体,您会不断添加。幻灯片:不是(.slide--current)>。文本块在我的例子中是不是?如果文本块总是幻灯片的直接子项,当然,我只是说明伪选择器的用法:)它是不是
。幻灯片:不是(.slide--current)>.text block
在我的例子中?如果文本块始终是幻灯片的直接子项,当然,我只是演示伪选择器的用法:)