I have the following situation which i want to solve with only CSS:
<input id="input_1" class="input_c" data-filter="data_x1" type="checkbox" />
<input id="input_2" class="input_c" data-filter="data_x2" type="checkbox" />
<input id="input_3" class="input_c" data-filter="data_x3" type="checkbox" />
<div class="sibling">
<div class="child-sibling">
<label class="label_1" for="input_1">
<span class="checkmark" data-filter="data_x1"></span>
</label>
<label class="label_2" for="input_2">
<span class="checkmark" data-filter="data_x2"></span>
</label>
<label class="label_3" for="input_3">
<span class="checkmark" data-filter="data_x3"></span>
</label>
</div>
<div class="child-sibling">
<label class="label_1" for="input_1">
<span class="checkmark" data-filter="data_x1"></span>
</label>
<label class="label_2" for="input_2">
<span class="checkmark" data-filter="data_x2"></span>
</label>
<label class="label_3" for="input_3">
<span class="checkmark" data-filter="data_x3"></span>
</label>
</div>
</div>
What I want to achieve is that when a label is clicked, the spans in the correct labels change layout. So if I click any "label_1", the spans in both the "label_1" are changed.
What I had in mind is the following (add this line for each different data-filter in css):
[data-filter="{{ name of data-filter}}"]:checked + .sibling [data-filter="{{ name of data-filter}}"] {
background: yellow;
}
When I do this, only label_3 works correctly.
I was also wondering if the above line could be generalized to one line with a css variable (if that even exists), so that if both data-filters match, with a checked box, the background turns yellow:
[data-filter=$var]:checked + .sibling [data-filter=$var] {
background: yellow
}
Thanks!