当前位置:首页 > VUE

vue实现简单星星评分

2026-02-25 20:53:12VUE

Vue 实现简单星星评分

基本思路

使用 Vue 的数据绑定和事件处理能力,通过 v-for 渲染星星图标,根据评分状态动态切换样式(如空心/实心)。核心逻辑包括:

vue实现简单星星评分

  • 数据驱动:通过 currentRatinghoverRating 控制显示状态
  • 交互反馈:鼠标悬停、点击事件触发评分变化

代码实现

<template>
  <div class="star-rating">
    <span 
      v-for="star in 5" 
      :key="star"
      @click="setRating(star)"
      @mouseover="hoverRating = star"
      @mouseleave="hoverRating = 0"
      :class="['star', { 'filled': (hoverRating || currentRating) >= star }]"
    >
      ★
    </span>
    <p v-if="currentRating">当前评分: {{ currentRating }}星</p>
  </div>
</template>

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

<style>
.star-rating {
  font-size: 24px;
  color: #ccc;
  cursor: pointer;
}
.star {
  display: inline-block;
  transition: color 0.2s;
}
.filled {
  color: gold;
}
</style>

功能扩展方案

允许半星评分

vue实现简单星星评分

// 修改模板部分
<span 
  v-for="star in 5" 
  :key="star"
  @click="setRating(star - 0.5)"
  @mouseover="hoverRating = star - 0.5"
>
  <span :class="['half-star', { 'filled': (hoverRating || currentRating) >= star - 0.5 }]">★</span>
  <span :class="['full-star', { 'filled': (hoverRating || currentRating) >= star }]">★</span>
</span>

// CSS 添加定位处理
.half-star {
  position: absolute;
  width: 50%;
  overflow: hidden;
}

只读模式

<span 
  v-for="star in 5" 
  :key="star"
  :class="['star', { 'filled': currentRating >= star }]"
>
  ★
</span>

组件化建议

可封装为可复用组件,通过 props 接收配置:

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

图标优化方案

  • 使用 SVG 代替 Unicode 字符获得更好控制
  • 引入字体图标库(如 Font Awesome)
  • 添加动画效果增强交互体验

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

相关文章

vue实现简单星星评分

vue实现简单星星评分

实现星星评分组件 在Vue中实现星星评分功能,可以通过组件化的方式完成。以下是一个简单的实现方案: <template> <div class="star-rating">…

vue 实现评分

vue 实现评分

实现评分组件的方法 在Vue中实现评分功能,可以通过自定义组件或使用第三方库来完成。以下是几种常见的实现方式: 使用自定义组件 创建一个可交互的评分组件,允许用户点击星星进行评分。 <tem…

vue实现评分

vue实现评分

实现评分功能的步骤 在Vue中实现评分功能可以通过多种方式完成,以下是一种常见的实现方法: 创建评分组件 使用v-for循环生成评分星星,并通过v-model绑定评分值: <templat…

php实现评分

php实现评分

实现评分功能的方法 在PHP中实现评分功能可以通过多种方式完成,以下是一些常见的方法: 数据库设计 创建数据库表存储评分数据,通常包含用户ID、项目ID、评分值等字段。示例表结构: CREATE…

PHP如何实现评分

PHP如何实现评分

实现评分功能的方法 在PHP中实现评分功能通常涉及数据库操作、用户输入处理和计算逻辑。以下是几种常见的实现方式: 数据库表设计 创建一个评分表存储用户评分数据,基本字段包括: CREATE TAB…

php实现评分功能

php实现评分功能

数据库设计 创建数据库表存储评分数据,表结构可包含字段:id(主键)、item_id(被评分项ID)、user_id(用户ID)、score(分数)、created_at(评分时间)。示例SQL:…