当前位置:首页 > VUE

vue实现简单星星评分

2026-02-25 20:53:12VUE

Vue 实现简单星星评分

基本思路

使用 Vue 的数据绑定和事件处理能力,通过 v-for 渲染星星图标,根据评分状态动态切换样式(如空心/实心)。核心逻辑包括:

  • 数据驱动:通过 currentRatinghoverRating 控制显示状态
  • 交互反馈:鼠标悬停、点击事件触发评分变化

代码实现

<template>
  <div class="star-rating">
    <span 
      v-for="star in 5" 
      :key="star"
      @click="setRating(star)"
      @mouseover="hoverRating = star"
      @mouseleave="hoverRating = 0"
      :class="['star', { 'filled': (hoverRating || currentRating) >= star }]"
    >
      ★
    </span>
    <p v-if="currentRating">当前评分: {{ currentRating }}星</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentRating: 0,
      hoverRating: 0
    }
  },
  methods: {
    setRating(star) {
      this.currentRating = star
    }
  }
}
</script>

<style>
.star-rating {
  font-size: 24px;
  color: #ccc;
  cursor: pointer;
}
.star {
  display: inline-block;
  transition: color 0.2s;
}
.filled {
  color: gold;
}
</style>

功能扩展方案

允许半星评分

// 修改模板部分
<span 
  v-for="star in 5" 
  :key="star"
  @click="setRating(star - 0.5)"
  @mouseover="hoverRating = star - 0.5"
>
  <span :class="['half-star', { 'filled': (hoverRating || currentRating) >= star - 0.5 }]">★</span>
  <span :class="['full-star', { 'filled': (hoverRating || currentRating) >= star }]">★</span>
</span>

// CSS 添加定位处理
.half-star {
  position: absolute;
  width: 50%;
  overflow: hidden;
}

只读模式

<span 
  v-for="star in 5" 
  :key="star"
  :class="['star', { 'filled': currentRating >= star }]"
>
  ★
</span>

组件化建议

可封装为可复用组件,通过 props 接收配置:

props: {
  maxStars: {
    type: Number,
    default: 5
  },
  initialRating: {
    type: Number,
    default: 0
  },
  readOnly: {
    type: Boolean,
    default: false
  }
}

图标优化方案

  • 使用 SVG 代替 Unicode 字符获得更好控制
  • 引入字体图标库(如 Font Awesome)
  • 添加动画效果增强交互体验

vue实现简单星星评分

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

相关文章

vue实现星星评价

vue实现星星评价

实现星星评价组件 在Vue中实现星星评价功能,可以通过自定义组件完成。以下是一个完整的实现方案: 创建星星评价组件 新建一个StarRating.vue文件,包含以下代码: <templ…

vue 实现星星评分

vue 实现星星评分

vue 实现星星评分的方法 使用组件化方式实现 创建一个独立的评分组件,通过v-for循环生成星星图标,利用v-model或props实现数据双向绑定。 <template> &l…

vue实现批量select评分

vue实现批量select评分

Vue 实现批量 Select 评分 在 Vue 中实现批量 Select 评分功能,可以通过动态生成评分选项并结合 v-model 实现数据绑定。以下是一个完整的实现示例: 基础实现 创建…

js 实现评分

js 实现评分

实现评分功能(五星评分) 在JavaScript中实现五星评分功能,可以通过HTML、CSS和JavaScript结合完成。以下是一个常见的实现方式: HTML部分 <div class…

js 实现星星打分

js 实现星星打分

实现星星打分功能 使用HTML、CSS和JavaScript可以创建一个交互式的星星打分系统。以下是一个完整的实现方法: HTML结构 <div class="star-rating">…

js实现微笑评分

js实现微笑评分

微笑评分实现思路 微笑评分通常基于面部识别技术,通过检测人脸关键点(如嘴角、眼睛)的位移或角度变化来评估微笑程度。以下是使用JavaScript及相关库实现的方案: 使用Face-api.js库实现…