当前位置:首页 > VUE

vue实现简单星星评分

2026-01-12 02:48:54VUE

Vue实现简单星星评分组件

以下是一个基于Vue的简单星星评分实现方案,支持点击评分和展示评分:

vue实现简单星星评分

组件代码

vue实现简单星星评分

<template>
  <div class="star-rating">
    <span 
      v-for="star in maxStars" 
      :key="star" 
      @click="rate(star)"
      @mouseover="hoverRating = star"
      @mouseleave="hoverRating = 0"
      :class="{ 'active': star <= currentRating || star <= hoverRating }"
    >
      ★
    </span>
    <span v-if="showRating">{{ currentRating }} / {{ maxStars }}</span>
  </div>
</template>

<script>
export default {
  props: {
    maxStars: {
      type: Number,
      default: 5
    },
    initialRating: {
      type: Number,
      default: 0
    },
    showRating: {
      type: Boolean,
      default: true
    }
  },
  data() {
    return {
      currentRating: this.initialRating,
      hoverRating: 0
    }
  },
  methods: {
    rate(star) {
      this.currentRating = star;
      this.$emit('rated', star);
    }
  }
}
</script>

<style scoped>
.star-rating {
  font-size: 24px;
  color: #ccc;
  cursor: pointer;
}
.star-rating .active {
  color: gold;
}
</style>

使用方法

<template>
  <div>
    <star-rating 
      :initial-rating="3" 
      @rated="handleRating"
    />
  </div>
</template>

<script>
import StarRating from './StarRating.vue';

export default {
  components: {
    StarRating
  },
  methods: {
    handleRating(rating) {
      console.log('用户评分:', rating);
    }
  }
}
</script>

功能说明

  1. 可自定义星星数量:通过maxStars prop设置最大星星数(默认5颗)
  2. 初始评分设置:通过initialRating prop设置初始评分
  3. 评分显示:通过showRating控制是否显示当前评分
  4. 交互反馈:鼠标悬停时显示临时评分效果,点击后确定评分
  5. 事件触发:评分变化时触发rated事件

进阶优化方向

  1. 半星评分:修改组件逻辑支持半星显示
  2. 禁用状态:添加disabled prop防止二次修改
  3. 自定义样式:通过slot或props支持自定义星星图标
  4. 只读模式:纯展示不交互的场景支持

该实现保持简洁的同时提供了基本的评分功能,可根据实际需求进行扩展。组件采用单向数据流设计,通过事件通知父组件评分变化,符合Vue的最佳实践。

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

相关文章

vue实现评分案例

vue实现评分案例

实现评分组件的基本结构 在Vue中创建一个评分组件,可以使用v-for循环生成星星图标,并通过v-model或自定义事件实现双向绑定。以下是一个基于Font Awesome图标的实现示例: <…

react实现评分功能

react实现评分功能

实现评分功能的方法 在React中实现评分功能可以通过多种方式完成,以下是一些常见的实现方法。 使用第三方库 使用现成的评分组件库可以快速实现功能,例如react-rating或react-star…

js实现微笑评分

js实现微笑评分

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

vue 实现评分

vue 实现评分

实现评分组件的方法 在Vue中实现评分功能,可以通过自定义组件或使用第三方库来完成。以下是几种常见的实现方式: 使用自定义组件 创建一个可交互的评分组件,允许用户点击星星进行评分。 <tem…

vue实现评分

vue实现评分

实现评分功能的步骤 在Vue中实现评分功能可以通过多种方式完成,以下是一种常见的实现方法: 创建评分组件 使用v-for循环生成评分星星,并通过v-model绑定评分值: <templat…

php实现评分

php实现评分

实现评分功能的方法 在PHP中实现评分功能可以通过多种方式完成,以下是一些常见的方法: 数据库设计 创建数据库表存储评分数据,通常包含用户ID、项目ID、评分值等字段。示例表结构: CREATE…