当前位置:首页 > JavaScript

js 实现星星打分

2026-02-02 20:02:06JavaScript

实现星星打分功能

使用HTML、CSS和JavaScript可以创建一个交互式的星星打分系统。以下是一个完整的实现方法:

HTML结构

<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>
<p>当前评分: <span id="rating-value">0</span> 星</p>

CSS样式

.star-rating {
  font-size: 24px;
  cursor: pointer;
}

.star {
  color: #ccc;
  transition: color 0.2s;
}

.star.hover {
  color: #ffcc00;
}

.star.active {
  color: #ffcc00;
}

JavaScript逻辑

js 实现星星打分

const stars = document.querySelectorAll('.star');
const ratingValue = document.getElementById('rating-value');
let currentRating = 0;

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

  star.addEventListener('mouseout', () => {
    highlightStars(currentRating);
  });

  star.addEventListener('click', () => {
    currentRating = parseInt(star.getAttribute('data-value'));
    ratingValue.textContent = currentRating;
    highlightStars(currentRating);
  });
});

function highlightStars(value) {
  stars.forEach(star => {
    star.classList.remove('hover', 'active');
    if (parseInt(star.getAttribute('data-value')) <= value) {
      star.classList.add('hover');
    }
    if (parseInt(star.getAttribute('data-value')) <= currentRating) {
      star.classList.add('active');
    }
  });
}

实现细节说明

星星打分系统通过CSS类来控制星星的显示状态。未选中时显示灰色,悬停或选中时显示黄色。

事件处理包括鼠标悬停、离开和点击三种交互方式。鼠标悬停时临时高亮显示星星数量,离开时恢复实际评分状态,点击后锁定评分。

js 实现星星打分

评分值存储在currentRating变量中,并实时显示在页面上。这种方法提供了良好的视觉反馈,用户可以直观地看到自己的选择。

扩展功能

要实现半星评分,可以使用两个并排的半星字符:

<span class="star" data-value="0.5">½</span>
<span class="star" data-value="1">★</span>

增加动画效果可以通过CSS实现:

.star {
  transform: scale(1);
  transition: all 0.2s;
}

.star:hover {
  transform: scale(1.2);
}

这个实现方案简洁高效,适合大多数网站需求,可以根据具体项目调整样式和交互细节。

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

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…