当前位置:首页 > VUE

vue怎么实现点星

2026-02-23 13:37:25VUE

实现 Vue 点星功能(评分/收藏)

在 Vue 中实现点星功能通常用于评分或收藏场景,以下是两种常见实现方式:

基于组件的事件绑定

创建可交互的星星图标组件,通过点击切换状态:

<template>
  <div class="star-rating">
    <span 
      v-for="i in 5" 
      :key="i"
      @click="setRating(i)"
      :class="{ 'active': i <= 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>

使用第三方库

对于更复杂的评分需求,可以安装专用库如 vue-star-rating

vue怎么实现点星

安装依赖:

npm install vue-star-rating

组件使用示例:

vue怎么实现点星

<template>
  <star-rating 
    :rating="rating"
    @rating-selected="setRating"
    :star-size="30"
  />
</template>

<script>
import StarRating from 'vue-star-rating'

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

动态星星效果增强

添加悬停效果提升用户体验:

<template>
  <div class="star-container">
    <span 
      v-for="i in 5"
      :key="i"
      @mouseover="hoverRating = i"
      @mouseleave="hoverRating = 0"
      @click="currentRating = i"
      :class="{
        'active': i <= currentRating,
        'hover': i <= hoverRating
      }"
    >★</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentRating: 0,
      hoverRating: 0
    }
  }
}
</script>

<style>
.star-container span {
  transition: all 0.2s;
}
.star-container span.hover {
  transform: scale(1.2);
}
</style>

持久化存储

如需保存评分状态,可通过 Vuex 或本地存储:

methods: {
  setRating(rating) {
    this.currentRating = rating
    localStorage.setItem('userRating', rating)
  }
},
created() {
  const saved = localStorage.getItem('userRating')
  if (saved) this.currentRating = Number(saved)
}

标签: vue
分享给朋友:

相关文章

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue实现树

vue实现树

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