当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…