当前位置:首页 > VUE

vue实现评分星星

2026-01-18 04:24:37VUE

Vue 实现评分星星组件

使用 Vue 实现评分星星功能可以通过自定义组件完成,以下是两种常见实现方式:

基础实现(静态评分)

<template>
  <div class="star-rating">
    <span 
      v-for="star in 5" 
      :key="star"
      @click="setRating(star)"
      :class="{ 'active': star <= currentRating }"
    >★</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentRating: 0
    }
  },
  methods: {
    setRating(rating) {
      this.currentRating = rating
    }
  }
}
</script>

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

进阶实现(支持半星评分)

<template>
  <div class="star-rating">
    <div 
      v-for="star in 5"
      :key="star"
      class="star-container"
      @mouseover="hoverRating = star"
      @mouseleave="hoverRating = 0"
      @click="setRating(star)"
    >
      <div class="star-background">★</div>
      <div 
        class="star-foreground"
        :style="{ width: getStarWidth(star) }"
      >★</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentRating: 0,
      hoverRating: 0
    }
  },
  methods: {
    setRating(rating) {
      this.currentRating = rating
    },
    getStarWidth(star) {
      const displayRating = this.hoverRating || this.currentRating
      return star <= displayRating ? '100%' : 
             star - 0.5 <= displayRating ? '50%' : '0%'
    }
  }
}
</script>

<style>
.star-rating {
  display: flex;
}
.star-container {
  position: relative;
  font-size: 24px;
  cursor: pointer;
}
.star-background {
  color: #ccc;
}
.star-foreground {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  color: gold;
  overflow: hidden;
  white-space: nowrap;
}
</style>

使用第三方库

对于更复杂的需求,可以考虑使用现成的评分组件库:

  1. 安装 vue-star-rating

    npm install vue-star-rating
  2. 使用示例:

    
    <template>
    <star-rating 
     v-model="rating"
     :increment="0.5"
     :star-size="20"
    />
    </template>
import StarRating from 'vue-star-rating'

export default { components: { StarRating }, data() { return { rating: 3.5 } } }

vue实现评分星星

```

注意事项

  • 自定义组件时应考虑添加 v-model 支持以实现双向绑定
  • 可以添加 readonly 属性支持只读模式
  • 考虑添加动画效果提升用户体验
  • 移动端需要添加触摸事件支持

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

相关文章

vue实现星级评分效果

vue实现星级评分效果

实现星级评分的基础结构 使用Vue实现星级评分需要构建一个可交互的星级组件。基本思路是通过v-for循环生成星星图标,并通过动态绑定类名或样式来控制选中状态。 <template>…

vue实现批量select评分

vue实现批量select评分

Vue 实现批量 Select 评分 在 Vue 中实现批量 Select 评分功能,可以通过动态生成评分选项并结合 v-model 实现数据绑定。以下是一个完整的实现示例: 基础实现 创建可复用的…

react实现星星评分

react实现星星评分

实现星星评分组件 使用React实现一个可交互的星星评分组件,可以通过状态管理用户选择的评分值。 import React, { useState } from 'react'; const St…

react实现评分功能

react实现评分功能

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

js 实现星星打分

js 实现星星打分

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

vue评分实现

vue评分实现

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