JSFiddle - React, Tailwind, and code Playground
by Cone
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Оценка деятельности центра</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.star-rating {
font-size: 2rem;
color: #ddd;
cursor: pointer;
}
.star-rating .filled {
color: #f39c12;
}
</style>
</head>
<body>
<div class="container text-center mt-5">
<h3>Оцените нашу деятельность</h3>
<div class="star-rating mt-3">
<i class="fa-solid fa-star" data-rating="1"></i>
<i class="fa-solid fa-star" data-rating="2"></i>
<i class="fa-solid fa-star" data-rating="3"></i>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.js"></script>
</body>
</html>
JavaScript
document.querySelectorAll('.star-rating i').forEach(star => {
star.addEventListener('click', function() {
const rating = this.getAttribute('data-rating');
console.log(rating);
// Обновляем стиль звезд на основе выбранной оценки
document.querySelectorAll('.star-rating i').forEach(star => {
star.classList.remove('filled');
});
for (let i = 0; i < rating; i++) {
document.querySelectorAll('.star-rating i')[i].classList.add('filled');
}
});
});