Верстка рейтинга в виде звезд

Вёрстка контролов оценки и показа рейтинга без изображений и JS.

1

Radio button скрыт, но играет двойную роль – отправляет оценку с формой и если добавить checked выделит нужную звезду и все предшествующие ей.

<div class="rating-area">
	<input type="radio" id="star-5" name="rating" value="5">
	<label for="star-5" title="Оценка «5»"></label>	
	<input type="radio" id="star-4" name="rating" value="4">
	<label for="star-4" title="Оценка «4»"></label>    
	<input type="radio" id="star-3" name="rating" value="3">
	<label for="star-3" title="Оценка «3»"></label>  
	<input type="radio" id="star-2" name="rating" value="2">
	<label for="star-2" title="Оценка «2»"></label>    
	<input type="radio" id="star-1" name="rating" value="1">
	<label for="star-1" title="Оценка «1»"></label>
</div>
HTML
.rating-area {
	overflow: hidden;
	width: 265px;
	margin: 0 auto;
}
.rating-area:not(:checked) > input {
	display: none;
}
.rating-area:not(:checked) > label {
	float: right;
	width: 42px;
	padding: 0;
	cursor: pointer;
	font-size: 32px;
	line-height: 32px;
	color: lightgrey;
	text-shadow: 1px 1px #bbb;
}
.rating-area:not(:checked) > label:before {
	content: '★';
}
.rating-area > input:checked ~ label {
	color: gold;
	text-shadow: 1px 1px #c60;
}
.rating-area:not(:checked) > label:hover,
.rating-area:not(:checked) > label:hover ~ label {
	color: gold;
}
.rating-area > input:checked + label:hover,
.rating-area > input:checked + label:hover ~ label,
.rating-area > input:checked ~ label:hover,
.rating-area > input:checked ~ label:hover ~ label,
.rating-area > label:hover ~ input:checked ~ label {
	color: gold;
	text-shadow: 1px 1px goldenrod;
}
.rate-area > label:active {
	position: relative;
}
CSS
2
<div class="rating-result">
	<span class="active"></span>	
	<span class="active"></span>    
	<span class="active"></span>  
	<span></span>    
	<span></span>
</div>
HTML
.rating-result {
	width: 265px;
	margin: 0 auto;
}
.rating-result span {
	padding: 0;
	font-size: 32px;
	margin: 0 3px;
	line-height: 1;
	color: lightgrey;
	text-shadow: 1px 1px #bbb;
}
.rating-result > span:before {
	content: '★';
}
.rating-result > span.active {
	color: gold;
	text-shadow: 1px 1px #c60;
}
CSS
3

Для вывода рейтинга в списках и листингах.

<div class="rating-mini">
	<span class="active"></span>	
	<span class="active"></span>    
	<span class="active"></span>  
	<span></span>    
	<span></span>
</div>
HTML
.rating-mini {
	display: inline-block;
	font-size: 0;
}
.rating-mini span {
	padding: 0;
	font-size: 20px;
	line-height: 1;
	color: lightgrey;
}
.rating-mini > span:before {
	content: '★';
}
.rating-mini > span.active {
	color: gold;
}
CSS
22.08.2019, обновлено 07.10.2020
96063

Комментарии 4

Денис Кротов Денис Кротов
9 марта 2021 в 17:30
Здравствуйте, подскажите пожалуйста возможно ли как то выровнять звезды по левому краю?Если меняю float: right; на float: left; то звезды начинают закрашиваться не стой стороны.
Готов рассмотреть помощь на платной основе.
Rysdaulet Abilkairov Rysdaulet Abilkairov
17 марта 2021 в 01:20
Самый простой способ:
.rating-area {
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
}
Олег К. Олег К.
7 февраля 2022 в 17:51
Отличная реализация рейтинга на чистом HTML/CSS.
Спасибо!
Ксю Живайкина Ксю Живайкина
14 августа 2023 в 14:54
Здравствуйте! Я хотел сделать несколько одинаковых рейтингов на одном сайте. Но проблема, при нажатии на один из рейтингов, меняются они все. Я не понимаю, как её решить. Можно ли это сделать без того, чтобы делать разные 10 рейтингов?

, чтобы добавить комментарий.

Другие публикации

Вывод PHP-массива колонками
Несколько примеров как вывести одномерный PHP-массив в виде таблицы, плиток и списком в несколько колонок. Имеем массив городов...
18655
+3
Селекторы JQuery
В jQuery, селекторы в основном позаимствованы из CSS 1-3, также добавлены свои, что дало хороший набор инструментов для манипуляций с элементами в документе.
15349
+12
Работа с checkbox в JQuery
Сборник приемов JQuery для работы с чекбоксом.
251365
+19
Вывод HTML-таблицы с функцией сортировки на PHP + MySQL
Несколько примеров как вывести данные из БД в таблицу и добавить к ней возможность сортировки. Итак, простой вывод...
33004
+9
Селект с чекбоксами
Селект с множественным выбором (select multiple) весьма не удобен, при выборе часто забываешь нажимать сtrl и все сбрасывается. В место него можно использовать чекбоксы в выпадающем списке.
36668
+10
Календарь jQuery UI Datepicker
DatePicker – хороший и функциональный плагин для выбора даты, легко настраивается и привязывается к стандартному полю ввода формы.
77626
+5