当前位置:首页 > 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 渲染星星,并通过计算属性判断是否显示全星、半星或空星:

vue实现豆瓣评分

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>

交互逻辑

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

vue实现豆瓣评分

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 接收参数:

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

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

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

相关文章

vue实现星星评分

vue实现星星评分

vue实现星星评分的方法 使用组件实现星星评分 创建一个可复用的星星评分组件,通过v-for循环渲染星星图标,利用动态绑定类名实现选中和未选中状态。 <template> <…

vue 实现豆瓣

vue 实现豆瓣

Vue 实现豆瓣应用 使用 Vue 实现一个豆瓣应用需要整合多个功能模块,包括电影列表、详情页、搜索和用户交互。以下是关键实现步骤: 项目初始化 使用 Vue CLI 创建项目: vue crea…

vue实现星级评分

vue实现星级评分

实现星级评分的基本思路 在Vue中实现星级评分通常需要创建一个可交互的组件,允许用户点击或悬停选择评分。核心逻辑包括渲染星星图标、处理用户交互以及动态更新评分状态。 使用Font Awesome图标…

vue实现评分案例

vue实现评分案例

实现评分组件的基本结构 在Vue中创建一个评分组件,可以使用v-for循环生成星星图标,并通过v-model或自定义事件实现双向绑定。以下是一个基于Font Awesome图标的实现示例: <…

vue实现点击星星评分

vue实现点击星星评分

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

react实现评分功能

react实现评分功能

实现评分功能的方法 在React中实现评分功能可以通过多种方式完成,以下是一些常见的实现方法。 使用第三方库 使用现成的评分组件库可以快速实现功能,例如react-rating或react-sta…