Chỉ vài bước đơn giản, bạn có thể tạo được một mẫu bình chọn mà hầu hết các các website trong và ngoài nước đều sử dụng.
Bài viết này sử dụng Bootstrap 3.4 làm CSS Framework. Bạn cần thêm vào trước </head>
.
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
HTML
Mình sử dụng cấu trúc HTML có 10 sao như sau.
<div id="cate-rating" class="cate-rating">
<div class="stars">
<a id="star-1" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-2" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-3" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-4" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-5" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-6" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-7" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-8" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-9" class="star"><span class="glyphicon glyphicon-star"></span></a>
<a id="star-10" class="star"><span class="glyphicon glyphicon-star"></span></a>
<p id="vote-desc">Mời bạn cho điểm!</p>
</div>
<div class="clearfix"></div>
</div>
CSS
CSS đơn giản như sau.
div.stars {}
a.star {
font-size: 24px;
color: #f0f1f4;
cursor: pointer;
line-height: 1;
transition: all 0.1s ease;
}
a.star.vote-hover {
color: #96e2fb;
}
a.star:active {
color: #56CCF2;
}
a.star.vote-active {
color: #0faef1;
}
.blue {
color: #0faef1;
}
JavaScript
Các bạn nên sử dụng jQuery để tiện cho việc lập trình.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
Thêm đoạn mã sau.
$(document).ready(function() {
/*
* Hiệu ứng khi rê chuột lên ngôi sao
*/
$('a.star').mouseenter(function() {
if ($('#cate-rating').hasClass('rating-ok') == false) {
var eID = $(this).attr('id');
eID = eID.split('-').splice(-1);
$('a.star').removeClass('vote-active');
for (var i = 1; i <= eID; i++) {
$('#star-' + i).addClass('vote-hover');
}
}
}).mouseleave(function() {
if ($('#cate-rating').hasClass('rating-ok') == false) {
$('a.star').removeClass('vote-hover');
}
});
/*
* Sự kiện khi cho điểm
*/
$('a.star').click(function() {
if ($('#cate-rating').hasClass('rating-ok') == false) {
var eID = $(this).attr('id');
eID = eID.split('-').splice(-1).toString();
for (var i = 1; i <= eID; i++) {
$('#star-' + i).addClass('vote-active');
}
$('p#vote-desc').html('<span class="blue">' + eID + ' (' + eID * 10 + '%)</span> · ' + 1 + ' đánh giá');
$('#cate-rating').addClass('rating-ok');
}
});
});
Nâng cao
Bạn có thể kết hợp với HTML5 Local Storage và AJAX để phát triển hệ thống chấm điểm hoàn chỉnh. Ví dụ: https://www.ocumeo.com/truyen-tranh/tinh-ca/.
Tham khảo thêm:
Chúc các bạn thành công!
Người Qua Đường
30/07/2019 lúc 1:25 sáng
ổn định
công nguyễn
04/10/2020 lúc 5:57 chiều
em làm xong nó không lưu được, đoạn JavaScript em không hiểu, giúp em để nó lưu được điểm với ạ
Admin
12/11/2020 lúc 3:29 chiều
à cái đó mình ko có hướng dẫn ở đây, vì tùy bạn dùng nền tảng nào á mà bạn tự code Ajax cho nó nhe. :v :v