当前位置:首页 > VUE

vue实现星星评价

2026-02-20 00:59:27VUE

Vue 实现星星评价组件

在 Vue 中实现星星评价功能可以通过自定义组件完成,主要涉及动态渲染星星图标、交互评分以及样式控制。以下是具体实现方法:

创建星星评价组件

模板部分
使用 v-for 循环渲染星星图标,并通过 v-on 监听点击和鼠标悬停事件:

<template>
  <div class="star-rating">
    <span 
      v-for="(star, index) in stars" 
      :key="index"
      @click="rate(index + 1)"
      @mouseover="hover(index + 1)"
      @mouseleave="resetRating"
      :class="{ 'active': star }"
    >
      ★
    </span>
    <p v-if="showScore">当前评分: {{ currentRating }}/{{ maxStars }}</p>
  </div>
</template>

脚本部分
定义组件的逻辑,包括初始化评分、处理交互事件:

<script>
export default {
  props: {
    maxStars: {
      type: Number,
      default: 5
    },
    initialRating: {
      type: Number,
      default: 0
    },
    showScore: {
      type: Boolean,
      default: true
    }
  },
  data() {
    return {
      stars: Array(this.maxStars).fill(false),
      currentRating: this.initialRating,
      tempRating: 0
    };
  },
  methods: {
    rate(score) {
      this.currentRating = score;
      this.$emit('rated', score);
      this.updateStars();
    },
    hover(score) {
      this.tempRating = score;
      this.updateStars();
    },
    resetRating() {
      this.tempRating = 0;
      this.updateStars();
    },
    updateStars() {
      const rating = this.tempRating || this.currentRating;
      this.stars = this.stars.map((_, i) => i < rating);
    }
  },
  mounted() {
    this.updateStars();
  }
};
</script>

样式部分
通过 CSS 控制星星的默认和激活状态:

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

使用组件示例

在父组件中引入并绑定事件:

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

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

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

功能扩展建议

  1. 半星评分
    修改 updateStars 方法,支持半星显示(如 3.5 分),可通过 Unicode 符号 组合实现。

  2. 禁用状态
    添加 disabled 属性,禁止用户交互:

    props: {
      disabled: {
        type: Boolean,
        default: false
      }
    }

    在模板中根据 disabled 禁用事件:

    <span 
      v-if="!disabled"
      @click="rate(index + 1)"
      @mouseover="hover(index + 1)"
    ></span>
  3. 自定义图标
    使用 slotprops 传入自定义图标组件,替代默认的 Unicode 星星。

通过以上方法,可以快速实现一个灵活、可复用的星星评价组件,适用于商品评分、用户反馈等场景。

vue实现星星评价

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

相关文章

vue实现点击星星评分

vue实现点击星星评分

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

如何评价百度禁用react

如何评价百度禁用react

百度禁用React的背景 百度曾因React的BSD+Patents许可证条款(包含专利反击条款)而禁用React。该条款规定,若使用者对Facebook提起专利诉讼,将自动失去React的使用权。百…

css制作星星

css制作星星

CSS 制作星星的方法 使用 CSS 可以轻松创建星星效果,以下是几种常见的实现方式: 使用 Unicode 字符 直接使用 Unicode 中的星星符号,并通过 CSS 调整样式: .s…

js 实现星星打分

js 实现星星打分

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

vue实现简单星星评分

vue实现简单星星评分

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

vue实现星星评分

vue实现星星评分

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