CSS: Star Rating
Learn how to create a simple star rating look with only CSS and minimum HTML. We are going to use the data attribute and the before and after selectors. Check this step-by-step guide.
Let´s Start.
GOAL
Create a rating system using minimum markup.
HTML
In orther to specify a rating we will use a span with a data attribute and a value from 1 to 5.
<span class="star" data-rating="3"></span>
CSS
The whole purpose of this snippets it´s to try to practice selectors and how can we use CSS to represent information from a data attribute.
The Content
We are going to use the ★ character for our rating system.
-
★★★★★
-
★★★★★
-
★★★★★
-
★★★★★
-
★★★★★
The Logic
If you think about it we are always to show five stars, some will be ★, and others ★.
In orther to show both types we will use the ::before (★) and ::after (★) selectors.
| Rating | before | after |
|---|---|---|
| 1 | 1 | 4 |
| 2 | 2 | 3 |
| 3 | 3 | 2 |
| 4 | 4 | 1 |
| 5 | 5 | 0 |
The Code
.star[data-rating="1"]::before,
.star[data-rating="4"]::after {
content: "★";
}
.star[data-rating="2"]::before,
.star[data-rating="3"]::after {
content: "★★";
}
.star[data-rating="3"]::before,
.star[data-rating="2"]::after {
content: "★★★";
}
.star[data-rating="4"]::before,
.star[data-rating="1"]::after {
content: "★★★★";
}
.star[data-rating="5"]::before,
.star[data-rating="0"]::after {
content: "★★★★★";
}