当前位置: 首页 > backend >正文

日常学习开发记录-rate评价组件

日常学习开发记录-rate评价组件

  • 1.最终效果
  • 2.核心思路
  • 3.部分代码

1.最终效果

Rate 评分组件是一个用于展示和收集用户评分的交互组件,常用于商品评价、服务评分等场景。本文将从实现思路、核心功能方面详细介绍如何实现一个功能完善的评分组件。
最终实现效果:
在这里插入图片描述

2.核心思路

核心思路:动态计算每颗星的填充比例

      getStarWidth(index) {if (this.disabled && this.showScore) {const decimal = this.value - index;return decimal >= 1 ? '100%' : `${Math.max(decimal, 0) * 100}%`;}if (this.hoverValue === -1) {const decimal = this.value - index;return decimal >= 1 ? '100%' : '0%';}const decimal = this.hoverValue - index;return decimal >= 1 ? '100%' : '0%';},

3.部分代码

<template><div class="my-rate" :class="{ 'is-disabled': disabled && !showScore }"><divv-for="(item, index) in max":key="index"class="my-rate__item":class="{ 'is-disabled': disabled && !showScore }"@mousemove="handleMouseMove($event, item)"@mouseleave="handleMouseLeave"@click="handleClick(item)"><slot :size="size" :color="voidColor" :index="index" :item="item"><svgt="1747122044589"class="icon"viewBox="0 0 1024 1024"version="1.1"xmlns="http://www.w3.org/2000/svg"p-id="4627":width="size":height="size":fill="voidColor"><pathd="M781.186088 616.031873q17.338645 80.573705 30.59761 145.848606 6.119522 27.537849 11.219124 55.075697t9.689243 49.976096 7.649402 38.247012 4.079681 19.888446q3.059761 20.398406-9.179283 27.027888t-27.537849 6.629482q-5.099602 0-14.788845-3.569721t-14.788845-5.609562l-266.199203-155.027888q-72.414343 42.836653-131.569721 76.494024-25.498008 14.278884-50.486056 28.557769t-45.386454 26.517928-35.187251 20.398406-19.888446 10.199203q-10.199203 5.099602-20.908367 3.569721t-19.378486-7.649402-12.749004-14.788845-2.039841-17.848606q1.01992-4.079681 5.099602-19.888446t9.179283-37.737052 11.729084-48.446215 13.768924-54.055777q15.298805-63.23506 34.677291-142.788845-60.175299-52.015936-108.111554-92.812749-20.398406-17.338645-40.286853-34.167331t-35.697211-30.59761-26.007968-22.438247-11.219124-9.689243q-12.239044-11.219124-20.908367-24.988048t-6.629482-28.047809 11.219124-22.438247 20.398406-10.199203l315.155378-28.557769 117.290837-273.338645q6.119522-16.318725 17.338645-28.047809t30.59761-11.729084q10.199203 0 17.848606 4.589641t12.749004 10.709163 8.669323 12.239044 5.609562 10.199203l114.231076 273.338645 315.155378 29.577689q20.398406 5.099602 28.557769 12.239044t8.159363 22.438247q0 14.278884-8.669323 24.988048t-21.928287 26.007968z"p-id="4628"></path></svg></slot><div class="star-filled" :style="{ width: getStarWidth(index) }"><slot :size="size" :color="getIconColor(item)" :index="index" :item="item"><svgt="1747122044589"class="icon"viewBox="0 0 1024 1024"version="1.1"xmlns="http://www.w3.org/2000/svg"p-id="4627":width="size":height="size":fill="getIconColor(item)"><pathd="M781.186088 616.031873q17.338645 80.573705 30.59761 145.848606 6.119522 27.537849 11.219124 55.075697t9.689243 49.976096 7.649402 38.247012 4.079681 19.888446q3.059761 20.398406-9.179283 27.027888t-27.537849 6.629482q-5.099602 0-14.788845-3.569721t-14.788845-5.609562l-266.199203-155.027888q-72.414343 42.836653-131.569721 76.494024-25.498008 14.278884-50.486056 28.557769t-45.386454 26.517928-35.187251 20.398406-19.888446 10.199203q-10.199203 5.099602-20.908367 3.569721t-19.378486-7.649402-12.749004-14.788845-2.039841-17.848606q1.01992-4.079681 5.099602-19.888446t9.179283-37.737052 11.729084-48.446215 13.768924-54.055777q15.298805-63.23506 34.677291-142.788845-60.175299-52.015936-108.111554-92.812749-20.398406-17.338645-40.286853-34.167331t-35.697211-30.59761-26.007968-22.438247-11.219124-9.689243q-12.239044-11.219124-20.908367-24.988048t-6.629482-28.047809 11.219124-22.438247 20.398406-10.199203l315.155378-28.557769 117.290837-273.338645q6.119522-16.318725 17.338645-28.047809t30.59761-11.729084q10.199203 0 17.848606 4.589641t12.749004 10.709163 8.669323 12.239044 5.609562 10.199203l114.231076 273.338645 315.155378 29.577689q20.398406 5.099602 28.557769 12.239044t8.159363 22.438247q0 14.278884-8.669323 24.988048t-21.928287 26.007968z"p-id="4628"></path></svg></slot></div></div><span v-if="showText" class="my-rate__text">{{ currentText }}</span><span v-if="showScore" class="my-rate__score">{{ displayValue }}</span></div>
</template>
http://www.xdnf.cn/news/5986.html

相关文章:

  • AI工具分享篇 | recraft.ai + figma 复刻技术路线图
  • Node.js事件循环中的FIFO原则
  • Docker入门教程:常用命令与基础概念
  • ‌C# 集成 FastDFS 完整指南‌
  • Django 中时区的理解
  • 科学养生,开启健康生活
  • 对抗帕金森:在疾病阴影下,如何重掌生活主动权?
  • PyTorch中的nn.Embedding应用详解
  • 电脑声音小怎么调大 查看声音调整方法
  • 【MD】LangChain 基础
  • SAP汽配解决方案:无锡哲讯科技助力企业数字化转型
  • 第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
  • EXCEL下拉菜单与交替上色设置
  • Qt事件循环机制
  • HTTP协议解析:Session/Cookie机制与HTTPS加密体系的技术演进(二)
  • 【大模型】DeepResearcher:通用智能体通过强化学习探索优化
  • 接口(API)开发核心知识点
  • DELL R770 服务器,更换RAID卡教程!
  • 注释之CR
  • InitVerse节点部署教程
  • flutter编译时 设置jdk版本
  • 电子电器架构 --- 区域计算架构(Zonal Compute)备战下一代电子电气架构
  • 什么是SparkONYarn模式
  • 《量子语言模型研究综述》核心解读
  • Windows下安装mysql8.0
  • ridecore流水线解读
  • 后端系统做国际化改造,生成多语言包
  • ai agent(智能体)开发 python高级应用1:Crawl4AI 如何通过ollama 给本地大模型插上网络翅膀
  • HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(二、项目准备与后台服务搭建)
  • Linux操作系统之进程(一):进程属性与进程创建