当前位置:首页 > JavaScript

js实现星级

2026-02-01 22:24:34JavaScript

实现星级评分的基本方法

使用HTML和CSS创建星级评分的界面结构。通常用<div><span>元素表示星星,并通过CSS设置样式。

<div class="star-rating">
  <span class="star" data-value="1">★</span>
  <span class="star" data-value="2">★</span>
  <span class="star" data-value="3">★</span>
  <span class="star" data-value="4">★</span>
  <span class="star" data-value="5">★</span>
</div>
.star-rating {
  font-size: 24px;
}
.star {
  cursor: pointer;
  color: #ccc;
}
.star.active {
  color: #ffcc00;
}

JavaScript实现交互功能

通过事件监听实现鼠标悬停和点击时的星级变化效果。

js实现星级

const stars = document.querySelectorAll('.star');

stars.forEach(star => {
  star.addEventListener('mouseover', () => {
    const value = parseInt(star.getAttribute('data-value'));
    highlightStars(value);
  });

  star.addEventListener('click', () => {
    const value = parseInt(star.getAttribute('data-value'));
    setRating(value);
  });
});

function highlightStars(value) {
  stars.forEach(star => {
    const starValue = parseInt(star.getAttribute('data-value'));
    star.classList.toggle('active', starValue <= value);
  });
}

function setRating(value) {
  localStorage.setItem('rating', value);
  highlightStars(value);
}

// 初始化时检查是否有保存的评分
const savedRating = localStorage.getItem('rating');
if (savedRating) {
  highlightStars(savedRating);
}

实现半星评分

如果需要更精确的半星评分,可以使用双倍数量的星星来表示半星。

<div class="star-rating">
  <span class="star" data-value="0.5">★</span>
  <span class="star" data-value="1">★</span>
  <span class="star" data-value="1.5">★</span>
  <span class="star" data-value="2">★</span>
  <span class="star" data-value="2.5">★</span>
  <span class="star" data-value="3">★</span>
  <span class="star" data-value="3.5">★</span>
  <span class="star" data-value="4">★</span>
  <span class="star" data-value="4.5">★</span>
  <span class="star" data-value="5">★</span>
</div>

使用SVG实现自定义星星

可以使用SVG来创建更精美的星星图标,并通过CSS控制其颜色变化。

js实现星级

<div class="star-rating">
  <svg class="star" data-value="1" viewBox="0 0 24 24">
    <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>
  </svg>
  <!-- 重复其他星星 -->
</div>
.star {
  width: 24px;
  height: 24px;
  fill: #ccc;
  cursor: pointer;
}
.star.active {
  fill: #ffcc00;
}

响应式设计考虑

确保星级评分在不同设备上都能良好显示,可以使用相对单位。

.star-rating {
  font-size: clamp(16px, 4vw, 32px);
}
.star {
  margin: 0 2px;
}

无障碍访问改进

为屏幕阅读器用户添加ARIA属性,提高可访问性。

<div class="star-rating" role="radiogroup" aria-label="产品评分">
  <span class="star" data-value="1" role="radio" aria-checked="false" aria-label="1星">★</span>
  <!-- 其他星星 -->
</div>
function setRating(value) {
  stars.forEach(star => {
    const starValue = parseInt(star.getAttribute('data-value'));
    const isActive = starValue <= value;
    star.setAttribute('aria-checked', isActive);
    star.classList.toggle('active', isActive);
  });
}

标签: 星级js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…