当前位置:首页 > 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

安装依赖:

npm install vue-star-rating

组件使用示例:

<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 或本地存储:

vue怎么实现点星

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实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echart…

vue如何实现tap

vue如何实现tap

实现Tap事件的方法 在Vue中实现类似移动端的tap事件(轻触)可以通过以下几种方式完成。原生移动端浏览器通常通过touchstart和touchend事件组合模拟tap,而Vue中可以封装自定义指…

vue前端实现教程

vue前端实现教程

Vue 前端实现基础教程 环境准备 安装 Node.js(建议 LTS 版本)和 npm/yarn。 通过命令行全局安装 Vue CLI: npm install -g @vue/cli 创建项…

vue实现前端路由

vue实现前端路由

Vue 实现前端路由的方法 Vue 可以通过 Vue Router 实现前端路由管理。以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router: n…

vue实现下拉菜单

vue实现下拉菜单

实现下拉菜单的基本结构 使用 Vue 的 v-show 或 v-if 控制下拉菜单的显示与隐藏。通过点击按钮或父元素触发下拉状态切换。 <template> <div cl…

vue实现微博话题

vue实现微博话题

Vue 实现微博话题功能 微博话题通常包含话题标签的识别、高亮显示、点击跳转等功能。以下是基于 Vue 的实现方案: 数据绑定与模板渲染 使用 Vue 的模板语法和指令动态渲染内容,通过正则表达式识…