当前位置:首页 > VUE

vue实现简单星星评分

2026-02-25 20:53:12VUE

Vue 实现简单星星评分

基本思路

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

  • 数据驱动:通过 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>

功能扩展方案

允许半星评分

// 修改模板部分
<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 接收配置:

vue实现简单星星评分

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

图标优化方案

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

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

相关文章

react实现星级评分

react实现星级评分

实现星级评分的基本思路 使用React实现星级评分通常涉及状态管理、事件处理和动态渲染。核心逻辑包括跟踪当前评分和悬停状态,通过图标或文字展示星级。 使用状态管理评分 创建组件并初始化状态,存储当前…

js 实现星星打分

js 实现星星打分

实现星星打分功能 使用HTML、CSS和JavaScript可以创建一个交互式的星星打分系统。以下是一个完整的实现方法: HTML结构 <div class="star-rating">…

css制作星星

css制作星星

使用CSS制作星星 在CSS中,可以通过多种方式制作星星效果,包括使用纯CSS形状、Unicode字符或SVG。以下是几种常见的方法: 使用Unicode字符 最简单的星星可以通过Unicode字符…

php实现评分功能

php实现评分功能

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

vue实现星星评价

vue实现星星评价

Vue 实现星星评价组件 在 Vue 中实现星星评价功能可以通过自定义组件完成,主要涉及动态渲染星星图标、交互评分以及样式控制。以下是具体实现方法: 创建星星评价组件 模板部分 使用 v-for 循…

vue实现评分效果

vue实现评分效果

Vue 实现评分效果的方法 在 Vue 中实现评分效果可以通过多种方式完成,常见的有基于组件库或自定义实现。以下是几种常见的方法: 使用第三方组件库(如 Element UI) Element UI…