当前位置:首页 > VUE

vue 实现评分

2026-01-07 23:08:26VUE

Vue 实现评分功能

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

使用第三方组件库(如 Element UI)

Element UI 提供了现成的评分组件 el-rate,可以快速实现评分功能。

安装 Element UI:

npm install element-ui

在 Vue 项目中引入并使用:

vue 实现评分

<template>
  <div>
    <el-rate v-model="rating" :colors="colors"></el-rate>
    <p>当前评分:{{ rating }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rating: 3,
      colors: ['#99A9BF', '#F7BA2A', '#FF9900']
    };
  }
};
</script>

el-rate 提供了丰富的配置选项,如:

  • v-model:绑定评分值。
  • colors:自定义评分图标的颜色。
  • disabled:禁用评分。
  • show-text:显示辅助文字。

自定义评分组件

如果需要完全自定义评分组件,可以通过 Vue 实现一个简单的评分功能。

vue 实现评分

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

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

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

实现半星评分

如果需要支持半星评分,可以进一步扩展自定义组件:

<template>
  <div>
    <div class="rating">
      <span 
        v-for="star in 5" 
        :key="star" 
        @click="setRating(star)"
        @mousemove="hoverRating = star"
        @mouseleave="hoverRating = 0"
      >
        <span 
          v-if="star <= currentRating || star <= hoverRating"
          class="full-star"
        >
          ★
        </span>
        <span 
          v-else-if="star - 0.5 <= currentRating || star - 0.5 <= hoverRating"
          class="half-star"
        >
          ★
        </span>
        <span v-else class="empty-star">
          ★
        </span>
      </span>
    </div>
    <p>当前评分:{{ currentRating }}</p>
  </div>
</template>

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

<style>
.rating span {
  font-size: 24px;
  cursor: pointer;
  position: relative;
}
.full-star {
  color: gold;
}
.half-star {
  color: gold;
  opacity: 0.5;
}
.empty-star {
  color: #ccc;
}
</style>

动态绑定评分数据

如果需要将评分数据绑定到父组件或后端,可以通过 props$emit 实现双向绑定:

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

<script>
export default {
  props: {
    value: {
      type: Number,
      default: 0
    }
  },
  methods: {
    setRating(star) {
      this.$emit('input', star);
    }
  }
};
</script>

在父组件中使用:

<template>
  <div>
    <rating-component v-model="rating"></rating-component>
    <p>当前评分:{{ rating }}</p>
  </div>
</template>

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

export default {
  components: {
    RatingComponent
  },
  data() {
    return {
      rating: 0
    };
  }
};
</script>

通过以上方法,可以根据需求选择适合的方式实现 Vue 评分功能。

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

相关文章

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…