Хорошо, давайте разберемся с вами. Здесь мы применяем соседний братский комбинатор со знаком «+». Селектор соседних элементов выбирает все элементы, которые являются соседними элементами указанного элемента. Например:
div + P {
color: blue;
border: 1px solid;
}
div{
border: 1px solid;
}
<div><p> child</p></div>
<p>I am your Adjacent sibling</p>
Приведенный выше код выберет p вне div, поскольку он является смежным элементом. Итак, здесь при наведении на поле ввода, поскольку его соседство равно i
, мы добавляем смежный комбинатор.
.star-rating input:hover + i,
Далее мы выбираем и показываем выбранные звезды с этим css:
.star-rating input:checked + i{
opacity: 1;
}
При нажатии проверяется поле ввода, которое просто делает видимым тег i (звездочка) с непрозрачностью 1. Затем мы применяем общий комбинатор сестринских сестер , который просто выбирает братьев и сестер определенного * 1037. * element.
div ~ p {
background-color: yellow;
}
<p>Paragraph 1.</p>
<div>
<p>Paragraph 2.</p>
</div>
<p>I am sibling</p>
<code>Some code.</code>
<p>I am sibling</p>
<p>I am sibling</p>
<p>I am sibling</p>
Так что здесь, при наведении на них последней звезды, которая равна 5. Мы хотим, чтобы все звезды также были выделены, и общий брат делает это для нас.
.star-rating i ~ i {
width: 40%;
}
.star-rating i ~ i ~ i {
width: 60%;
}
.star-rating i ~ i ~ i ~ i {
width: 80%;
}
.star-rating i ~ i ~ i ~ i ~ i {
width: 100%;
}
Наконец, мы назначаем различный фон для стартов в процентах:
.star-rating.star-5 {width: 250px;}
.star-rating.star-5 input,
.star-rating.star-5 i {width: 20%;}
.star-rating.star-5 i ~ i {width: 40%;}
.star-rating.star-5 i ~ i ~ i {width: 60%;}
.star-rating.star-5 i ~ i ~ i ~ i {width: 80%;}
.star-rating.star-5 i ~ i ~ i ~ i ~i {width: 100%;}
.star-rating.star-3 {width: 150px;}
.star-rating.star-3 input,
.star-rating.star-3 i {width: 33.33%;}
.star-rating.star-3 i ~ i {width: 66.66%;}
.star-rating.star-3 i ~ i ~ i {width: 100%;}
Надеюсь, что поможет:)