当前位置:首页 > VUE

vue实现豆瓣评分

2026-02-20 11:58:15VUE

Vue 实现豆瓣评分功能

实现豆瓣评分功能需要结合 Vue 的数据绑定和组件化特性,通常包括评分展示、交互评分和样式渲染。以下是具体实现方法:

数据准备

定义评分数据,通常豆瓣评分是 0-5 分,以半星为间隔(如 4.5 分)。在 Vue 的 data 中初始化评分:

data() {
  return {
    score: 4.5, // 当前评分
    maxScore: 5, // 满分
    isInteractive: false // 是否允许用户交互评分
  }
}

评分渲染逻辑

使用 v-for 渲染星星,并通过计算属性判断是否显示全星、半星或空星:

computed: {
  stars() {
    const stars = []
    for (let i = 1; i <= this.maxScore; i++) {
      if (this.score >= i) {
        stars.push('full') // 全星
      } else if (this.score > i - 1) {
        stars.push('half') // 半星
      } else {
        stars.push('empty') // 空星
      }
    }
    return stars
  }
}

模板部分

在模板中渲染星星,并根据交互状态绑定点击事件:

<div class="star-rating">
  <span 
    v-for="(star, index) in stars" 
    :key="index"
    @click="isInteractive ? setScore(index + 1) : null"
    :class="['star', star]"
  >
    {{ star === 'full' ? '★' : star === 'half' ? '½' : '☆' }}
  </span>
  <span class="score-text">{{ score.toFixed(1) }}</span>
</div>

交互逻辑

如果允许用户评分,通过方法更新分数:

methods: {
  setScore(newScore) {
    this.score = newScore
  }
}

样式优化

添加 CSS 美化评分组件,例如颜色和悬停效果:

.star-rating {
  display: flex;
  align-items: center;
  font-size: 24px;
}
.star {
  cursor: pointer;
  color: #ccc;
  margin-right: 2px;
}
.star.full {
  color: #ffac2d;
}
.star.half {
  position: relative;
}
.star.half:after {
  content: '★';
  position: absolute;
  left: 0;
  width: 50%;
  overflow: hidden;
  color: #ffac2d;
}
.score-text {
  margin-left: 8px;
  font-size: 16px;
  color: #666;
}

动态半星实现

更精确的半星可以通过 SVG 或 CSS 渐变实现。例如使用 CSS 伪元素控制半星宽度:

.star.half {
  position: relative;
  display: inline-block;
}
.star.half:before {
  content: '★';
  position: absolute;
  width: 50%;
  overflow: hidden;
  color: #ffac2d;
}

组件化封装

将评分功能封装为可复用组件,通过 props 接收参数:

vue实现豆瓣评分

props: {
  value: {
    type: Number,
    default: 0
  },
  interactive: {
    type: Boolean,
    default: false
  }
}

通过以上步骤,可以实现一个功能完整且样式美观的豆瓣评分组件,支持展示静态评分或用户交互评分。

标签: 豆瓣评分
分享给朋友:

相关文章

vue实现点击星星评分

vue实现点击星星评分

Vue 实现点击星星评分 使用 Vue 实现点击星星评分功能可以通过动态绑定类名和事件处理来实现。以下是一个简单的实现方法: 模板部分 <template> <div cla…

js 实现评分

js 实现评分

实现评分功能(五星评分) 在JavaScript中实现五星评分功能,可以通过HTML、CSS和JavaScript结合完成。以下是一个常见的实现方式: HTML部分 <div class="…

js实现微笑评分

js实现微笑评分

微笑评分实现思路 微笑评分通常基于面部识别技术,通过检测人脸关键点(如嘴角、眼睛)的位移或角度变化来评估微笑程度。以下是使用JavaScript及相关库实现的方案: 使用Face-api.js库实现…

vue 实现评分

vue 实现评分

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

vue实现星星评分

vue实现星星评分

实现星星评分的基本思路 在Vue中实现星星评分功能,可以通过组件化的方式完成。核心逻辑包括渲染星星图标、处理用户交互以及动态更新评分状态。 创建星星评分组件 创建一个名为StarRating.vue…

php实现评分功能

php实现评分功能

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