Селектор &:hover + &::before
не будет работать, поскольку вы выбираете псевдоэлемент следующего элемента (+ &::before
).Что (я думаю) вы хотите сделать, это изменить псевдоэлемент текущего элемента.
Что касается состояния наведения, вы можете изменить это:
&:hover + &::before { // compiled to: .form__checkbox-label:hover + .form__checkbox-label::before
background-color: red;
height: 40px;
}
на это:
&:hover:before { // compiled to: .form__checkbox-label:hover:before
background-color: red;
height: 40px;
}
. В вашем примере синий флажок станет красным (с высотой 40 пикселей) при наведении.
Изменение цвета в зависимости от состояния флажка
Чтобы сделать это, вам нужно сделать несколько вещей:
Изменить порядок HTML
<div class="form__checkbox">
<!-- input first! -->
<input type="checkbox" id="accept" class="form__checkbox-input">
<label for="accept" class="form__checkbox-label">I have read and accept the terms of use.</label>
</div>
Добавить селектор CSS дляваш флажок, ориентируясь на «метку следующего брата», когда :checked
.
&__checkbox {
// abbreviated...
&-input {
// abbreviated...
&:checked + .form__checkbox-label:before {
background-color: green;
}
}
}