当前位置:首页 > VUE

vue评分实现

2026-02-10 01:05:30VUE

实现 Vue 评分功能

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

使用第三方库(如 vue-star-rating

安装库:

npm install vue-star-rating

在组件中使用:

<template>
  <star-rating 
    v-model="rating" 
    :increment="0.5" 
    :show-rating="false"
  />
</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 maxStars" 
      :key="star" 
      @click="setRating(star)"
    >
      {{ star <= currentRating ? '★' : '☆' }}
    </span>
    <p>{{ currentRating }} of {{ maxStars }}</p>
  </div>
</template>

<script>
export default {
  props: {
    maxStars: {
      type: Number,
      default: 5
    },
    initialRating: {
      type: Number,
      default: 0
    }
  },
  data() {
    return {
      currentRating: this.initialRating
    };
  },
  methods: {
    setRating(star) {
      this.currentRating = star;
      this.$emit('rating-selected', star);
    }
  }
};
</script>

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

实现半星评分

扩展自定义组件以支持半星:

<template>
  <div class="star-rating">
    <span 
      v-for="star in starsArray" 
      :key="star.index"
      @click="setRating(star.index)"
      @mousemove="setPreview(star.index)"
      @mouseleave="resetPreview"
    >
      {{ star.isFull ? '★' : '☆' }}
    </span>
  </div>
</template>

<script>
export default {
  props: {
    maxStars: { type: Number, default: 5 },
    value: { type: Number, default: 0 }
  },
  data() {
    return {
      previewRating: 0
    };
  },
  computed: {
    starsArray() {
      return Array.from({ length: this.maxStars }, (_, i) => ({
        index: i + 1,
        isFull: this.previewRating >= i + 1 || 
               (!this.previewRating && this.value >= i + 1)
      }));
    }
  },
  methods: {
    setRating(rating) {
      this.$emit('input', rating);
    },
    setPreview(rating) {
      this.previewRating = rating;
    },
    resetPreview() {
      this.previewRating = 0;
    }
  }
};
</script>

动态颜色和大小

通过 props 控制样式:

vue评分实现

<template>
  <span 
    :style="{
      color: starColor,
      fontSize: starSize + 'px'
    }"
  >
    {{ star <= currentRating ? '★' : '☆' }}
  </span>
</template>

<script>
export default {
  props: {
    starColor: { type: String, default: 'gold' },
    starSize: { type: Number, default: 24 }
  }
};
</script>

这些方法提供了从简单到高级的评分组件实现方案,可根据项目需求选择合适的方式。第三方库适合快速集成,自定义组件则提供更大的灵活性和控制权。

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

相关文章

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生改…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…