如何选择特定班级之前的兄弟姐妹?

时间:2018-06-20 21:26:20

标签: javascript css

我的React应用正在创建步骤列表:

let steps = this.props.formSteps.map((step, i) => {
            let stepNum = i +1;
            return (
                <li className={ i == this.props.currentStepsIndex ? "steps__step active" : "steps__step"} key={"li-"+i}
                 onClick={this.handleClick.bind(this, i)}>
                  {step.name}
                </li>
            );
})
return(
  <div className="steps-container">
    <ul className="steps">
      {steps}
    </ul>
  </div>
);

通过3个步骤,生成的html看起来像这样:

<ul class="steps">
  <li class="steps__step">Step 1</li>
  <li class="steps__step">Step 2</li>
  <li class="steps__step active">Step 3</li>
</ul>

我想选择活动课程之前的所有li步骤,并将背景设置为绿色或类似的颜色。

如何使用CSS完成此操作?

2 个答案:

答案 0 :(得分:0)

您可以这样做。反转逻辑,然后选择所有下一个同级来删除背景:

.steps__step {
 background:green;
}

.active,
.active ~ .steps__step {
 background:none;
}
<ul class="steps">
  <li class="steps__step">Step 1</li>
  <li class="steps__step">Step 2</li>
  <li class="steps__step active">Step 3</li>
  <li class="steps__step">Step 4</li>
  <li class="steps__step">Step 5</li>
</ul>

答案 1 :(得分:0)

我不知道在特定兄弟姐妹之前的兄弟姐妹元素的任何CSS选择器。但是,在您的特定情况下,您可以通过选择不带有“活动”类的元素来获得所需的结果。

类似的东西:

.steps__step:not(.active) {
   background-color: green;
}