uniapp 绘制五星评分 精确到半星

server/2025/1/15 9:54:21/

uniapp 绘制五星评分 精确到半星

  1. 对比上一篇博客 这个很简单
  2. 上组件
<template><div :class="[imgType=='other'?'image-box':'image-box1']"><img :class="[imgType=='other'?'image':'image1']" v-for="(el,i) in value" :key="i" :src="el" alt=""></div>
</template><script>export default {props: {type: {type: Number,default: 1 // 总分5, 总分 100},score: {type: Number,default: 0 // 得分50,得分 100},imgType: {type: String,default: 'other' // wonder:奇观, other:其他}},data() {return {wonder: ['https://eshopfile.zhiyousx.com/173284619428810213.png','https://eshopfile.zhiyousx.com/173284619428405733.png','https://eshopfile.zhiyousx.com/173284619428491512.png'], //奇观other: ["https://eshopfile.zhiyousx.com/173284605868930990.png","https://eshopfile.zhiyousx.com/173284605869004457.png","https://eshopfile.zhiyousx.com/173284605868490597.png",], //其他};},computed: {// 转换得分value() {// 得分为0if (!this.score) {let newArr = []for (var i = 0; i < 5; i++) {newArr.push(this[this.imgType][2])}return newArr}// 得分不为0let value = this.type == 2 ? (this.score / 20).toFixed(1) : this.score;let arr = []// 空星 向后添加let empty = 5 - Math.ceil(value);for (let i = 1; i < 6; i++) {if (value >= i) {arr.push(this[this.imgType][0]); // 全星} else {if (value < i && Math.ceil(value) == i) {let num = this.getNumber(this.score) - 1console.log(num)arr.push(this[this.imgType][num]); // 半星} else {arr.push(this[this.imgType][2]); // 空星}}}return arr},},methods: {getNumber(input) {input = this.type == 2 ? (input / 20).toFixed(1) : input;const decimalPart = (input * 10 - Math.floor(input) * 10) / 10; // 获取小数部分if (decimalPart >= 0.1 && decimalPart <= 0.2) {return 3;} else if (decimalPart >= 0.3 && decimalPart <= 0.7) {return 2;} else if (decimalPart >= 0.8 && decimalPart <= 0.9) {return 1;}}}};
</script>
<style lang="scss" scoped>.image {width: 24rpx;height: 24rpx;margin-right: 2rpx;}.image1 {width: 28rpx;height: 28rpx;// margin-right: 2rpx;}.image-box {height: 30rpx;width: 130rpx;text-align: center;}.image-box1 {height: 30rpx;width: 140rpx;text-align: center;}
</style>
  1. 组件使用
<template><view class="external-box"><starRate :score="100" /></view>
</template><script>import starRate from "../components/starRateImg.vue";export default {components: {starRate,},};
</script><style lang="scss" scoped></style>
  1. 该组件 判断规则 0-0.2 为 0星 0.3-0.7 半星 0.8-1 1星

对比上一个博客 该组件更简单 更直观 无适配问题 但精确度不够 可以增加图片 提高精度。

`


http://www.ppmy.cn/server/158517.html

相关文章

Java 面试中的高频算法题详解

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

字符串算法篇——字里乾坤,算法织梦,解构字符串的艺术(下)

文章目录 前言第一章&#xff1a;最长公共前缀1.1 题目链接&#xff1a;https://leetcode.cn/problems/longest-common-prefix/description/1.2 题目分析&#xff1a;1.3 思路讲解&#xff1a;1.4 代码实现&#xff1a; 第二章&#xff1a;最长回文子串2.1 题目链接&#xff1a…

GET 和 POST 请求的详细区别及代码示例

文章目录 前言一、请求参数的处理方式二、安全性和幂等性三、缓存机制四、数据类型支持五、请求体的区别六、示例代码结语 前言 GET 和 POST 是 HTTP 协议中两种最常用的请求方法&#xff0c;它们在如何发送数据、安全性、幂等性等方面有着显著的不同。下面将更深入地探讨这两…

android framework.jar 在应用中使用

在开发APP中&#xff0c;有时会使用系统提供的framework.jar 来替代 android.jar, 在gradle中配置如下&#xff1a; 放置framework.jar 依赖配置 3 优先级配置 gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspat…

信号与系统初识---信号的分类

文章目录 0.引言1.介绍2.信号的分类3.关于周期大小的求解4.实信号和复信号5.奇信号和偶信号6.能量信号和功率信号 0.引言 学习这个自动控制原理一段时间了&#xff0c;但是只写了一篇博客&#xff0c;其实主要是因为最近在打这个华数杯&#xff0c;其次是因为在补这个数学知识…

Kotlin 快速上手指南:从安装 IntelliJ IDEA 到编写第一个程序

文章目录 什么是kotlinIntelliJ IDEA安装 IntelliJ IDEA创建 Kotlin 项目运行 Kotlin 程序更改进入后默认打开上一次项目的设置打开 IntelliJ IDEA进入设置:重新启动 IntelliJ IDEA:快速学习Kotlin变量声明类型推断条件表达式定义函数单表达式函数when 表达式when 语句的基本…

Zookeeper特性与节点数据类型详解

1、 Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效可靠的原语集…

微信小程序集成Vant Weapp移动端开发的框架

什么是Vant Weapp Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网地睛&#xff1a;介绍 - Vant Weapp (vant-ui.gith…