当前位置:首页 > VUE

vue实现简单星星评分

2026-01-07 03:13:26VUE

实现星星评分组件

在Vue中实现星星评分功能可以通过组件化的方式完成,以下是具体实现方法:

组件模板部分

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

组件脚本部分

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

组件样式部分

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

.star-rating span {
  margin-right: 5px;
}

.star-rating .active {
  color: gold;
}

.star-rating .hover {
  color: orange;
}
</style>

使用方法

在父组件中引入并使用星星评分组件:

<star-rating 
  :max-stars="5" 
  :initial-rating="3"
  @rating-changed="handleRatingChange"
/>
methods: {
  handleRatingChange(rating) {
    console.log('Selected rating:', rating);
  }
}

实现半星评分

如需实现半星评分功能,可以修改组件逻辑:

vue实现简单星星评分

<template>
  <div class="star-rating">
    <span 
      v-for="star in fullStars" 
      :key="'full-' + star"
      @click="setRating(star)"
    >★</span>

    <span 
      v-if="hasHalfStar"
      @click="setRating(fullStars + 0.5)"
    >½</span>

    <span 
      v-for="star in emptyStars" 
      :key="'empty-' + star"
      @click="setRating(fullStars + 0.5 + star)"
    >☆</span>
  </div>
</template>
computed: {
  fullStars() {
    return Math.floor(this.currentRating);
  },
  hasHalfStar() {
    return this.currentRating % 1 !== 0;
  },
  emptyStars() {
    return this.maxStars - Math.ceil(this.currentRating);
  }
}

以上实现提供了完整的星星评分功能,包括交互效果和样式自定义,可根据实际需求进行调整。

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

相关文章

vue 实现星星评分

vue 实现星星评分

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

react实现星级评分

react实现星级评分

实现星级评分的基本思路 使用React实现星级评分通常涉及状态管理、事件处理和动态渲染。核心逻辑包括跟踪当前评分和悬停状态,通过图标或文字展示星级。 使用状态管理评分 创建组件并初始化状态,存储当前…

css制作星星

css制作星星

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

js实现微笑评分

js实现微笑评分

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

vue评分实现

vue评分实现

实现 Vue 评分功能 在 Vue 中实现评分功能可以通过自定义组件或使用第三方库完成。以下是两种常见的实现方式: 使用第三方库(如 vue-star-rating) 安装库: npm i…

vue 实现评分

vue 实现评分

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