vue+canvas实现根据数据展示不同高度,不同j渐变颜色的长方体效果

文章目录

  • 不一样的长方体
    • 1. 实现效果预览
    • 2.实现思路
      • 2.1效果难点
      • 2.2 实现思路
    • 3.实现
      • 3.1 测试数据编写
      • 3.2 编写canvas绘制函数

不一样的长方体

1. 实现效果预览

俗话说的好,没有实现不了的页面效果,只有禁锢的思想
这不ui又给整了个新奇的页面效果,

效果预览

2.实现思路

2.1效果难点

  • 根据不同的数据展示不同的颜色,而且需要渐变并有块状效果。
  • 绘制多个单独的区域

2.2 实现思路

实现思路

3.实现

3.1 测试数据编写

testData1:[
{ name:“库房1”, now:888, extends:1800 },
{ name:“库房2”, now:988, extends:1700 },
{ name:“库房3”, now:488, extends:2200 },
{ name:“库房4”, now:1888, extends:800 },
{ name:“库房5”, now:1088, extends:1600 },
{ name:“库房6”, now:1388, extends:1300 },
{ name:“库房7”, now:288, extends:2400 },
{ name:“库房8”, now:888, extends:1800 },
{ name:“库房9”, now:888, extends:1800 },
{ name:“库房10”, now:1888, extends:800 },
{ name:“库房11”, now:1288, extends:1400 },
{ name:“库房12”, now:1488, extends:1200 },
{ name:“库房13”, now:1888, extends:800 },
{ name:“库房14”, now:188, extends:2500 },
{ name:“库房2”, now:988, extends:1700 },
{ name:“库房3”, now:488, extends:2200 },
{ name:“库房4”, now:1888, extends:800 },
{ name:“库房5”, now:1088, extends:1600 },
{ name:“库房13”, now:1888, extends:800 },
{ name:“库房14”, now:188, extends:2500 },
{ name:“库房3”, now:488, extends:2200 },
{ name:“库房4”, now:1888, extends:800 },
{ name:“库房5”, now:1088, extends:1600 },
],

3.2 编写canvas绘制函数

js部分

draw(i,item){canvas = document.getElementById(`myCanvas${i}`);const ctx = canvas.getContext('2d');// 定义矩形块的宽度和高度const rectWidth = canvas.width;const rectHeight = canvas.height/8;// 定义矩形块之间的间距const rectSpacing = 0.25 ;// 定义要绘制的行数和列数//其中2688代表测试数据中的now+extends的总和,//可根据具体情况自己调整const numRows = Math.ceil(item.now*10/2688);const numCols = 1;let color=[]if(Math.ceil(item.now*10/2688) >= 7){color[0]='#EE5E5D'color[1]='#FFECEC'}else if(Math.ceil(item.now*10/2688) >= 4){color[0]='#EEA750'color[1]='#FFF0DD'}else{color[0]='#4BCBA6'color[1]='#9EFAE0'}// 绘制矩形块for (let row = 0; row < numRows; row++) {for (let col = 0; col < numCols; col++) {const x = col * (rectWidth + rectSpacing);const y = row * (rectHeight + rectSpacing);// 设置矩形块的颜色const grd = ctx.createLinearGradient(canvas.width/2, 0,canvas.width/2,canvas.height);grd.addColorStop(0, color[1]);grd.addColorStop(1,color[0]);// 用渐变填充ctx.fillStyle = grd;// 绘制矩形块ctx.fillRect(x, y, rectWidth, rectHeight);}}}

html部分

 <ul><li v-for="item,index in testData1" :key="index"><p class="title">{{item.now}}/{{item.extends}}m³</p><div class="show"><canvas :id="`myCanvas${index}`" class="canvas"></canvas></div><p class="storeName">{{item.name}}</p></li></ul>

scss部分

container{width:100%;height:100%;position:relative;ul{display:grid;margin-top:20px;margin-left:10px;width:97%;grid-template-columns: repeat(10,1fr);gap:10px;font-family: Source Han Sans-Regular, Source Han Sans;li{width:100%;aspect-ratio: 1 / 1.5;background: #FFFFFF;box-shadow: 0px 8px 14px 0px rgba(48,78,121,0.5);border-radius: 4px;position:relative;text-align: center;.title{font-size: 14px;font-weight: 400;color: #929292;margin-top:14px;}.show{width:33%;height:70%;background: #EFF2F7;margin:10px auto;border-radius: 4px;.canvas{width:100%;height:100%;transform: rotate(180deg);}}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/700989.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索执法部门如何在不依赖面部识别的情况下追踪感兴趣的人

概述 视频证据在犯罪调查中的重要性正日益凸显&#xff0c;其数量之多已经达到了前所未有的水平。据美国司法援助局&#xff08;Bureau of Justice Assistance, BJS&#xff09;的数据显示&#xff0c;大约80%的犯罪案件都涉及到某种形式的视频证据&#xff0c;并且这一比例还…

暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略

暗黑4可以搬砖吗&#xff1f;暗黑4怎么搬砖 搬砖攻略 暗黑破坏神4属于是暴雪旗下一款经典游戏IP&#xff0c;在全世界有着广泛的玩家群体&#xff0c;更是在今年暴雪国服宣布回归之后&#xff0c;吸引了一大批新玩家加入。今天小编就为大家带来暗黑4的详细搬砖教程。 现在我们…

Notepad8.1.9汉化中文版

下载地址&#xff1a;Notepad8.1.9.zip 一款优秀免费的源代码编辑器&#xff0c;支持语法高亮的开源纯文本编辑器&#xff0c;并且可以替代系统自带的记事本的功能。

Java入门之数据类型和变量

1.字面常量 字面常量就是在程序运行中&#xff0c;固定不变的量&#xff0c;例如如下的代码 public class Demo{public static void main(String[] args){System.Out.println("hello world!");System.Out.println(100);System.Out.println(3.14);System.Out.println…

汇昌联信电商:拼多多网店好做吗?

在电子商务的海洋中&#xff0c;拼多多以其独特的团购模式和亲民策略迅速崛起&#xff0c;吸引了大批消费者和商家的目光。对于“拼多多网店好做吗?”这个问题&#xff0c;答案并非简单的是与否&#xff0c;而是需要从多个维度进行深入分析。 一、市场定位与竞争环境 拼多多定…

免费pr相册模板mogrt|手机壁纸AI绘画摄影作品照片展示模板视频素材

pr相册模板mogrt&#xff0c;手机壁纸、电脑桌面壁纸、AI绘画、摄影作品、照片展示模板视频素材。 Premiere Pro 2023及以上版本。 全高清&#xff08;19201080&#xff09;分辨率/30fps。 通用表达式&#xff08;适用于所有特效语言&#xff09;。 免费下载&#xff1a;https…

Pycharm配置Git以及Gitee实现代码管理(全网最详细)

前言&#xff1a;如果是自己想练手&#xff0c;完全可以用gitee当做代码管理平台&#xff08;gitee注册后就可用&#xff09; 1.环境准备 &#xff08;1&#xff09;需要安装Git&#xff08;在windows&#xff09; &#xff08;2&#xff09;windows下安装Git可参考如下链接…

如何为zencart网站开启debug调试模式

在管理Zencart网站时&#xff0c;调试程序是至关重要的一环。然而&#xff0c;有时候在调试过程中&#xff0c;我们可能会遇到前台界面显示不完整或者出现空白页面的情况。这时候&#xff0c;启用错误提示就成了解决问题的关键。 我是在hostease购买的VPS主机带cPanel面板。 他…

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

问题现象 问题的风险及影响 导致数据库无法托管监控 问题影响的版本 问题发生原因 安装数据库时修改了OM的监听ip为127.0.0.1 解决方法及规避方式 后台修改OM的ip为本机的ip或者0.0.0.0 问题分析和处理过程 1、修改env文件中的om IP地址&#xff0c;修改为0.0.0.0或本机…

CSS的基础语法和常见的语法简单归纳

CSS CSS 是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的缩写。它是一种用来控制网页样式和布局的标记语言。通过 CSS&#xff0c;可以定义网页中的元素&#xff08;如文字、图像、链接等&#xff09;的外观和排版方式&#xff0c;包括字体、颜色、大小、间距、…

C++ Primer 第五版 第十一章 关联容器

关联容器中的元素是按关键字来保存和访问的。 两个主要的关联容器类型是map和set。 一、使用关联容器 使用map 当从map中提取一个元素时&#xff0c;会得到一个pair类型的对象。pair是一个模板类型&#xff0c;保存两个名为first和second的&#xff08;公有&#xff09;数据成…

ASP.NET邮件收发程序的设计与开发

摘 要 《邮件收发程序的设计与开发》是一个综合性的程序设计&#xff0c;涉及到界面、系统、数据库、协议、编码等多个方面的内容。本设计前台采用.NET技术,后台数据库采用SQL Server 2000&#xff0c;语言采用C#&#xff0c;主要讲述了邮件系统的注册、登陆、管理、发送和…