当前位置:首页 > VUE

vue实现等级打分

2026-02-19 05:33:38VUE

Vue 实现等级打分功能

使用 v-model 绑定评分值

在 Vue 中可以通过 v-model 双向绑定一个数据属性来存储评分值。例如使用数字 1-5 表示五个等级:

<template>
  <div>
    <span 
      v-for="star in 5" 
      :key="star"
      @click="rating = star"
    >
      {{ star <= rating ? '★' : '☆' }}
    </span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rating: 0
    }
  }
}
</script>

使用组件库实现

Element UI 和 Ant Design Vue 等流行组件库都提供了现成的评分组件:

<!-- Element UI -->
<el-rate v-model="rating"></el-rate>

<!-- Ant Design Vue -->
<a-rate v-model="rating" />

自定义评分组件

创建可复用的评分组件,支持自定义图标、颜色和大小:

<template>
  <div class="star-rating">
    <span 
      v-for="star in maxStars"
      :key="star"
      @click="setRating(star)"
      :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
    }
  },
  methods: {
    setRating(star) {
      this.currentRating = star
      this.$emit('rating-changed', star)
    }
  }
}
</script>

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

支持半星评分

实现更精确的半星评分功能:

<template>
  <div>
    <span 
      v-for="star in 5"
      :key="star"
      @mousemove="setTempRating(star)"
      @mouseleave="tempRating = 0"
      @click="setFinalRating(star)"
    >
      {{ getStarType(star) }}
    </span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rating: 0,
      tempRating: 0
    }
  },
  methods: {
    setTempRating(star) {
      this.tempRating = star
    },
    setFinalRating(star) {
      this.rating = star
    },
    getStarType(star) {
      if (this.tempRating >= star || (!this.tempRating && this.rating >= star)) {
        return '★'
      }
      return '☆'
    }
  }
}
</script>

添加动画效果

使用 CSS 过渡或动画增强用户体验:

vue实现等级打分

.star-rating span {
  transition: all 0.2s ease;
}
.star-rating span:hover {
  transform: scale(1.2);
}

这些方法提供了从简单到复杂的 Vue 评分实现方案,可根据项目需求选择适合的方式。组件化的实现提高了代码复用性,而自定义功能则可以满足特定的设计需求。

标签: 等级vue
分享给朋友:

相关文章

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-model…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue 实现拖拽

vue 实现拖拽

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

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HTM…