当前位置:首页 > VUE

vue怎么实现点星

2026-01-22 22:53:48VUE

在 Vue 中实现点星(星级评分)功能可以通过多种方式完成,以下是几种常见的方法:

使用 v-for 动态渲染星星

通过 v-for 循环生成星星图标,结合点击事件动态切换选中状态:

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

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

<style>
.active {
  color: gold;
}
</style>

使用第三方组件库

许多 UI 库提供了现成的星级评分组件,例如 Element UI 的 Rate 组件:

<template>
  <el-rate v-model="rating"></el-rate>
</template>

<script>
import { ElRate } from 'element-plus'

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

自定义 SVG 星星

使用 SVG 创建更灵活的星星形状,并通过计算属性控制填充状态:

<template>
  <div>
    <svg 
      v-for="star in 5" 
      :key="star"
      @click="rate(star)"
      width="24" 
      height="24"
      viewBox="0 0 24 24"
    >
      <path 
        d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
        :fill="star <= selectedStars ? 'gold' : 'gray'"
      />
    </svg>
  </div>
</template>

实现半星评分

如果需要支持半星评分,可以扩展基本实现:

vue怎么实现点星

<template>
  <div>
    <span 
      v-for="star in 5" 
      :key="star"
      @click="rate(star)"
      @mousemove="hoverRating = star"
      @mouseleave="hoverRating = null"
    >
      <span v-if="star <= (hoverRating || selectedStars)">★</span>
      <span v-else-if="star - 0.5 <= (hoverRating || selectedStars)">½</span>
      <span v-else>☆</span>
    </span>
  </div>
</template>

每种方法都有其适用场景,简单项目可以使用原生实现,复杂项目推荐使用成熟的组件库以获得更好的交互体验和可访问性。

标签: vue
分享给朋友:

相关文章

vue实现分支

vue实现分支

Vue 实现分支的方法 在 Vue 项目中实现分支功能通常涉及条件渲染、动态组件或路由控制。以下是几种常见的实现方式: 条件渲染(v-if/v-show) 使用 Vue 的指令根据条件显示不同内容:…

vue实现图片搜索

vue实现图片搜索

Vue实现图片搜索功能 使用HTML5的File API获取图片 通过<input type="file">元素让用户选择图片文件,使用FileReader对象读取图片数据。 <t…

vue中如何实现循环

vue中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法为…

vue实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue实现switch

vue实现switch

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

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…