当前位置:首页 > VUE

vue实现打星

2026-02-20 02:23:05VUE

Vue 实现打星评分功能

基础实现思路

使用v-for循环生成星星图标,通过动态绑定class或样式实现选中效果。核心逻辑是通过点击或鼠标悬停事件改变当前选中的星数。

代码示例

<template>
  <div class="star-rating">
    <span 
      v-for="star in maxStars" 
      :key="star"
      @click="setRating(star)"
      @mouseover="hoverRating = star"
      @mouseleave="hoverRating = 0"
      :class="{
        'active': star <= (hoverRating || currentRating),
        'inactive': star > (hoverRating || currentRating)
      }"
    >★</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      maxStars: 5,
      currentRating: 0,
      hoverRating: 0
    }
  },
  methods: {
    setRating(star) {
      this.currentRating = star
      this.$emit('rating-changed', star)
    }
  }
}
</script>

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

组件化封装

将评分组件独立封装,通过props接收配置参数:

vue实现打星

props: {
  maxStars: {
    type: Number,
    default: 5
  },
  initialRating: {
    type: Number,
    default: 0
  },
  disabled: {
    type: Boolean,
    default: false
  }
}

进阶功能实现

支持半星评分需要更复杂的逻辑处理:

vue实现打星

// 计算实际显示的星数
displayRating(rating) {
  return Math.round(rating * 2) / 2
}

使用第三方库

推荐使用专门为Vue设计的评分组件库:

  • vue-star-rating
  • vue-rate 安装后直接引入使用:
    
    import VueStarRating from 'vue-star-rating'

export default { components: { VueStarRating } }



#### 注意事项
- 移动端需要考虑触摸事件
- 可访问性需要添加ARIA标签
- 双向绑定建议使用v-model实现
- 大型项目建议将样式抽离为SCSS变量

标签: vue
分享给朋友:

相关文章

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue 实现blog

vue 实现blog

Vue 实现博客的基本步骤 使用 Vue 实现博客可以分为前端和后端两部分,前端使用 Vue.js 框架,后端可以选择 Node.js、Python 或其他服务端语言。以下是一个基于 Vue 的博客实…

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…