当前位置:首页 > VUE

vue实现星星评分

2026-01-15 01:28:40VUE

Vue 实现星星评分

在 Vue 中实现星星评分功能,可以通过自定义组件或使用第三方库来完成。以下是两种常见实现方式:

自定义星星评分组件

创建一个可复用的星星评分组件,支持点击和悬停交互:

vue实现星星评分

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

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

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

使用方法:

<star-rating 
  :max-stars="5" 
  :initial-rating="3" 
  @rated="handleRating"
/>

使用第三方库

安装 vue-star-rating 库:

vue实现星星评分

npm install vue-star-rating

使用示例:

<template>
  <star-rating 
    v-model:rating="rating" 
    :increment="0.5" 
    :star-size="30"
  />
</template>

<script>
import StarRating from 'vue-star-rating';

export default {
  components: {
    StarRating
  },
  data() {
    return {
      rating: 3.5
    };
  }
};
</script>

半星评分实现

如果需要支持半星评分,可以修改自定义组件:

<template>
  <div class="star-rating">
    <span 
      v-for="star in starsArray" 
      :key="star.index"
      @click="rate(star.value)"
      @mouseover="hover(star.value)"
      @mouseleave="resetRating"
      :class="getStarClass(star.value)"
    >
      {{ star.isHalf ? '½' : '★' }}
    </span>
  </div>
</template>

<script>
export default {
  props: {
    maxStars: {
      type: Number,
      default: 5
    },
    increment: {
      type: Number,
      default: 1
    },
    initialRating: {
      type: Number,
      default: 0
    }
  },
  computed: {
    starsArray() {
      const stars = [];
      for (let i = 1; i <= this.maxStars; i++) {
        stars.push({
          index: i,
          value: i,
          isHalf: false
        });
        if (this.increment === 0.5 && i < this.maxStars) {
          stars.push({
            index: i + 0.5,
            value: i + 0.5,
            isHalf: true
          });
        }
      }
      return stars;
    }
  },
  // 其余代码与前面示例相同
};
</script>

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

相关文章

vue实现星星评分原理

vue实现星星评分原理

实现星星评分的基本原理 星星评分通常通过显示一组星星图标,允许用户点击或悬停来选择评分值。Vue 的响应式特性使得实现这一功能变得简单,核心逻辑包括数据绑定、事件处理和动态样式控制。 数据绑定与渲染…

vue实现点击星星评分

vue实现点击星星评分

Vue 实现点击星星评分 使用 Vue 实现点击星星评分功能可以通过动态绑定类名和事件处理来实现。以下是一个简单的实现方法: 模板部分 <template> <div cla…

vue实现简单星星评分

vue实现简单星星评分

实现星星评分组件 在Vue中实现星星评分功能,可以通过组件化的方式完成。以下是一个简单的实现方案: <template> <div class="star-rating">…

vue实现评分

vue实现评分

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

vue实现星星评分

vue实现星星评分

实现星星评分的基本思路 在Vue中实现星星评分功能,可以通过组件化的方式完成。核心逻辑包括渲染星星图标、处理用户交互以及动态更新评分状态。 创建星星评分组件 创建一个名为StarRating.vue…

php实现评分

php实现评分

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