如果他们的labels
color: red;
具有否 sibling
,我想让所有input
都拥有value
。
我尝试首先选择inputs
而没有这样的value
:
.state-input--red > .input__wrapper > .input__input:not([value])
然后,我尝试选择他的sibling
label
添加以下部分:
~ .input__label
因此我得到了此选择,并将color
设置为red
,但是它不起作用:
.state-input--red > .input__wrapper > .input__input:not([value]) ~ .input__label {
color: red;
}
我还尝试通过在sibling
之前也添加.input__wrapper >
来指定label
选择,但这是行不通的。这是我的代码段:
.state-input--red > .input__wrapper > .input__input:not([value]) ~ .input__label {
color: red;
}
<div class="input state-input--red">
<div class="input__wrapper">
<label class="input__label" for="input00">I should be black, because my siblin input has a value</label>
<input id="input00" type="text" value="Hello World">
</div>
</div>
<hr>
<div class="input state-input--red">
<div class="input__wrapper">
<label class="input__label" for="input01">I should be red, because my sibling input has no value</label>
<input id="input01" class="input__input" type="text">
</div>
</div>
答案 0 :(得分:1)
像a ~ b
这样的选择器会匹配所有同级b
之前的所有同级a
元素,但是在您的标记中,是{{1}之前的label
}}:这就是为什么它不起作用的原因。
作为一种可能的解决方案,您可以将input
元素转换为带有.input__wrapper
的{{1}}容器,然后在flexbox
和flex-direction: row-reverse
中切换顺序代码以保持当前的可视化效果。
这样做label
这样的选择器将按预期工作。