search
  • Sign In
  • Sign Up
Password reset successful

Follow the proiects vou are interested in andi aet the latestnews about them taster

Table of Contents
HTML Structure
CSS Styling
Accessibility & Usability Tips
Home Web Front-end H5 Tutorial Implementing a star rating system with HTML5 and CSS.

Implementing a star rating system with HTML5 and CSS.

Dec 21, 2025 am 04:28 AM
css html5

使用HTML5和CSS可创建无需JavaScript的星级评分系统。1. 通过radio按钮和label构建结构,隐藏单选按钮并用标签显示星形。2. 利用direction: rtl调整顺序,使高分在前,结合:checked和~选择器实现选中时的样式填充。3. 添加:hover效果以提升交互体验,确保每个label关联对应的input,并提供aria-label增强可访问性。4. 测试键盘导航,保证可用性。该方案语义清晰、美观且兼容屏幕阅读器,适用于静态表单或用户评价场景。

Implementing a star rating system with HTML5 and CSS.

To create a star rating system using HTML5 and CSS, you can build an interactive and visually appealing component without JavaScript. This approach uses semantic HTML, CSS pseudo-elements, and the :checked selector to display ratings.

HTML Structure

Use radio buttons for the rating options and labels styled as stars. The radio buttons are hidden, while the labels are styled to look like stars.

<div class="rating">
  <input type="radio" id="star5" name="rating" value="5">
  <label for="star5">★</label>

  <input type="radio" id="star4" name="rating" value="4">
  <label for="star4">★</label>

  <input type="radio" id="star3" name="rating" value="3">
  <label for="star3">★</label>

  <input type="radio" id="star2" name="rating" value="2">
  <label for="star2">★</label>

  <input type="radio" id="star1" name="rating" value="1">
  <label for="star1">★</label>
</div>

CSS Styling

Style the stars using font characters or icons, and use the general sibling combinator (~) to apply styles when a radio button is checked.

.rating {
  direction: rtl;
  font-size: 2rem;
  color: #ccc;
}

.rating input {
  display: none;
}

.rating label {
  cursor: pointer;
  font-size: 2rem;
  color: gold;
  transition: color 0.2s;
}

.rating label:hover,
.rating label:hover ~ label,
.rating input:checked ~ label {
  color: gold;
}

The direction: rtl flips the order so higher values come first, allowing the ~ selector to style all previous siblings. Hovering over a star fills it and all "previous" (visually to the right) stars.

Accessibility & Usability Tips

  • Ensure each label has a matching for attribute tied to its input's id.
  • Add a title or aria-label for screen readers (e.g., "5 stars").
  • Use a consistent color scheme and provide visual feedback on hover and selection.
  • Test keyboard navigation—users should be able to tab through and select ratings.

Basically, this method gives a clean, accessible star rating using only HTML and CSS. It works well for static forms or user reviews where client-side scripting isn't required.

The above is the detailed content of Implementing a star rating system with HTML5 and CSS.. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

ArtGPT

ArtGPT

AI image generator for creative art from text prompts.

Stock Market GPT

Stock Market GPT

AI powered investment research for smarter decisions

Popular tool

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to add styles to Bootstrap switch components with CSS_Transformation through checkbox pseudo-element How to add styles to Bootstrap switch components with CSS_Transformation through checkbox pseudo-element Apr 03, 2026 pm 03:54 PM

The default style of the Bootstrap switch cannot be changed because it draws visual effects through pseudo elements::before/::after, which needs to cover .form-switch.form-check-input .form-check-label::before (track) and ::after (slider) and handle all states such as: checked, :disabled and :checked:disabled.

How to set a transparent frosted sidebar with CSS_using rgba color through background-filter How to set a transparent frosted sidebar with CSS_using rgba color through background-filter Apr 03, 2026 pm 03:57 PM

In Safari, the background-filter needs to be prefixed with -webkit- and the background is opaque to take effect; the blur value cannot be 0; the size of the blurred area affects performance more than the numerical value; text needs to be enhanced with contrast and strokes to ensure readability.

How to achieve smooth fade-out of page switching using CSS_Using animation mask How to achieve smooth fade-out of page switching using CSS_Using animation mask Apr 02, 2026 pm 07:45 PM

Transition realizes the lightest and controllable page fade-out. It needs to cooperate with the two-step control of opacity and visibility. JS listens to the transitionend and then uninstalls the component. The animation mask is prone to lag, z-index conflicts and the status is difficult to synchronize. It is only necessary in a few scenarios such as sensitive information.

How to make a simple jitter tip with CSS_using keyframes and rotation How to make a simple jitter tip with CSS_using keyframes and rotation Apr 03, 2026 pm 03:42 PM

Shake animation should use translateX() to achieve left and right displacement instead of rotate(); it needs to be combined with @keyframes to define a 0%/25%/50%/75%/100% offset sequence, and the offset is controlled within ±2px~±6px; animation-fill-m must be added ode:forwards (or use both), select cubic-bezier(.36,.07,.19,.97) for easing; the old animation must be cleared and forced to rearrange before JS is triggered; use will-change with caution on the mobile terminal, and only add translateZ(0) to ensure hardware acceleration.

How to implement Bootstrap fixed header scrolling with CSS_Set the position attribute of thead How to implement Bootstrap fixed header scrolling with CSS_Set the position attribute of thead Apr 03, 2026 pm 04:00 PM

The fundamental reason is that the browser does not support the direct application of position:sticky to the thead, because the display:table of the parent container table limits the sticky behavior; the tbody must be moved into an independent scrolling container and a display:block split structure must be set up to unify the column width with colgroup to achieve a stable fixed header.

How to implement custom scroll bar styles on the mobile side with CSS_through pseudo-element webkit-scrollbar How to implement custom scroll bar styles on the mobile side with CSS_through pseudo-element webkit-scrollbar Apr 03, 2026 pm 03:45 PM

Mobile side::-webkit-scrollbar often fails because Android WebView and Safari before iOS 16.4 do not support this pseudo element; iOS 16.4 only has limited support, and Android basically does not support it; the alternative is to disable the native scroll bar and customize it with CSS JS.

How CSS solves the absolute positioning offset bug under IE_Fixed by setting the hasLayout attribute How CSS solves the absolute positioning offset bug under IE_Fixed by setting the hasLayout attribute Apr 03, 2026 pm 03:48 PM

The essence of the inaccurate offset of position:absolute in IE6–8 is that the parent container does not trigger hasLayout, causing the absolute positioning reference to the wrong containing block; it needs to be actively triggered by reliable methods such as zoom:1, rather than relying solely on position:relative.

How to modify the Bootstrap form validation color with CSS_by overriding the pseudo-class style How to modify the Bootstrap form validation color with CSS_by overriding the pseudo-class style Apr 03, 2026 pm 03:51 PM

The input:valid and input:invalid pseudo-classes do not take effect because the browser does not trigger native verification due to the lack of required attributes or type semantic types (such as email, url); Bootstrap's is-valid/is-invalid relies on JS rather than pseudo-classes, so you need to ensure that HTML constraints exist and CSS weight is sufficient.

Related articles