Я хочу создать чистую систему звездного рейтинга css [без jquery]. Итак, у меня есть html-форма с 5 переключателями. До сих пор я мог сделать, когда я наводил/нажимал на радиокнопку со звездочкой, чтобы изменить собственное фоновое изображение. Это работает для каждой звезды, НО отдельно. Когда нажимаю на пятую звезду - меняется только пятая звезда. Когда нажимаю на четвертую звезду - меняется только четвертая звезда и так далее. Я хочу сделать это, когда я навожу/нажимаю на пятую звезду -> все звезды, чтобы изменить их фоновое изображение. Когда я нажимаю на вторую звезду, первые две звезды меняются и т. Д., Чтобы пользователь мог видеть, за сколько звезд он голосует. (вы видели эти рейтинговые системы по всему Интернету)
Хочу сделать вот так (опять же только css):
Но заканчиваю так:
Итак, у меня есть 5 звезд/радиовходов, и каждый из них относится к классу:
1 звезда -> радиоStarButton1
2 звезды -> радиоStarButton2
3 звезды -> радиоStarButton3
4 звезды -> радиоStarButton4
5 звезд -> радиоStarButton5
<input type="radio" name="stars" id="'.'2stars-for-id-'.$row['id'].'" class="radioStarButton2" value="2" />
<label for="'.'2stars-for-id-'.$row['id'].'"></label>
<input type="radio" name="stars" id="'.'3stars-for-id-'.$row['id'].'" class="radioStarButton3" value="3" checked />
<label for="'.'3stars-for-id-'.$row['id'].'"></label>
<input type="radio" name="stars" id="'.'4stars-for-id-'.$row['id'].'" class="radioStarButton4" value="4" />
<label for="'.'4stars-for-id-'.$row['id'].'"></label>
<input type="radio" name="stars" id="'.'5stars-for-id-'.$row['id'].'" class="radioStarButton5" value="5" />
<label for="'.'5stars-for-id-'.$row['id'].'"></label>
Я хочу, чтобы при наведении/нажатии на второй класс .radioStarButton2 также менялся первый класс -> .radioStarButton1, и ЭТО проблема - изменить более одного элемента класса, ЕСЛИ это возможно.
Также css: это работает css:
input[type="radio"]{
display:none;
}
input[type="radio"] + label
{
background-image: url("uncheckedstar.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
.radioStarButton1:hover + label
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
.radioStarButton1:checked + label
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
Следующий код явно неверен, но я не знаю, как это сделать. Я загружаю его только для идеи, что я пытаюсь сделать:
.radioStarButton2:hover + label , .radioStarButton1
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
.radioStarButton2:checked + label , .radioStarButton1
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
.radioStarButton3:hover + label , .radioStarButton1 , .radioStarButton2
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}
.radioStarButton3:checked + label , .radioStarButton1 , .radioStarButton2
{
background-image: url("star.png");
height: 23px;
width: 23px;
display:inline-block;
padding: 0 0 0 0px;
}