canvas 连线曲线图封装
$.fn.hChart=function (opt) {
var setting=$.extend({
className:'',
data:[]
},opt);
var tbody=this;
var className=setting.className;
var arr=setting.data;
var spanEl=function (le) {
if(le>0){
return '<span class="'+className+'">'+le+'</span>';
}else {
return Math.abs(le);
}
}
for (let i=0;i<arr.length;i++) {
var str='<tr id="'+className+'_'+i+'">';
for(let js in arr[i].arr){
str+='<td>'+spanEl(arr[i].arr[js])+'</td>';
}
str+='</tr>';
$(str).appendTo(tbody);
}
var arr=[];
$.each($("."+className,tbody),function () {
var setoff=$(this).offset();
var jo={"top":setoff.top,"left":setoff.left,id:"canvas_"+$(this).parent().parent().attr("id"),w:$(this).width(),h:$(this).height()};
arr.push(jo);
});
for(let a=arr.length-1;a>0;a--){
var c=document.createElement("canvas");
var wLeft=tbody.offset().left;
var wTop=tbody.offset().top;
var st=arr[a];
var pr=arr[a-1];
var cTop=Math.min(st.top,pr.top);
var cLeft=Math.min(st.left,pr.left);
var cw,cuLeft,ch,cuTop,mToLeft,mToTop,liToLeft,liToTop;
var activeH=st.h/2;
if(st.left<pr.left){
cw= pr.left-st.left-st.h;
cuLeft= st.left-wLeft+st.h;
ch=st.top-pr.top;
cuTop=pr.top-wTop+activeH;
mToLeft=pr.left-cLeft;
mToTop=pr.top-cTop;
liToLeft=st.left-cLeft;
liToTop=st.top-cTop;
}else if(st.left==pr.left){
cw= st.w;
cuLeft=st.left-wLeft;
ch=(st.top-pr.top)/2+5;
cuTop=pr.top-wTop+st.h;
mToLeft=cw/2;
mToTop=pr.top-cTop;
liToLeft=cw/2;
liToTop=st.top-cTop;
}else{
cw=st.left-pr.left-st.h;
cuLeft=st.left-wLeft-cw;
ch=st.top-pr.top;
cuTop=pr.top-wTop+activeH;
mToLeft=pr.left-cLeft;
mToTop=pr.top-cTop;
liToLeft=st.left-cLeft;
liToTop=st.top-cTop;
}
c.style.position='absolute';
c.style.top=cuTop+"px";
c.style.left=cuLeft+"px";
c.width=cw;
c.height=ch;
c.id=arr[a].id;
let cx=c.getContext("2d");
cx.strokeStyle="red";
cx.moveTo(mToLeft,mToTop);
cx.lineTo(liToLeft,liToTop);
cx.stroke();
$(c).appendTo(tbody);
}
}
})(jQuery);
var arr=[
{"arr":[-3,-2,-5,-4,7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,8]},
{"arr":[3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,7,-9,-7,-8,-8]},
{"arr":[3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,8]},
{"arr":[3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,7,-9,-7,-8,-8]},
{"arr":[3,-2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,-2,-5,4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]},
{"arr":[-3,2,-5,-4,-7,-9,-1,-6,-8,-3,-2,-5,-4,-7,-9,-7,-8,-8]}
]; $("#tbody").hChart({
className:'active',
data:arr
});
canvas 连线曲线图封装的更多相关文章
- canvas 连线曲线图
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...
- 兼容IE浏览器的canvas画线和圆圈
1.新建test.html文件,代码如下: <!DOCTYPE html><html><head> <meta charset="utf-8& ...
- canvas 画线
一.canvas是基于状态的绘图环境 1.canvas是基于状态的绘制 context.moveTo(100,100); context.lineTo(700,700); context.lineWi ...
- canvas绘制线和矩形
###canvas绘制矩形 HTML中的元素canvas只支持一种原生的图形绘制:矩形.所有其他的图形的绘制都至少需要生成一条路径 1.绘制矩形 canvas提供了三种方法绘制矩形: ----> ...
- uniapp 封装 request 并 配置跨域,( 本地 + 线上 + 封装 )
找到上面这个 文件,不管是用 命令创建 还是 用 HBX 创建,都一样会有这个文件的,然后跟着截图复制粘贴就好了. // 这是配置本地能跨域的,或者你可以直接让后端给你设置请求头,避免了跨域. &qu ...
- canvas sprite动画 简单封装
function SpritCtx(img, size, pos, turnTime, totalCount, ctx) { size = size || {}; pos = pos || {}; / ...
- canvas连线特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- canvas 添加线和删除线 及获取相关位置信息源码
其他相关链接: https://github.com/lusase/lineDrawer.git https://www.jb51.net/css/359062.html https://www.jb ...
- HTML5之Canvas绘图实例——曲线图
实现正弦.余弦和正切函数画图(如下图):调试环境:Firefox
随机推荐
- struct和class两个关键字的区别
1. <C++ Primer> 用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private. 2. ...
- github踩坑之git命令收集与整理(windows)
最近开始又捡起git,第一家公司用的就是git,一直掌握的也不深刻,就知道常用的几个命令,虽然现在用svn,但是觉得git还是不能丢,遂又捡起来了.先总结一部分目前练习用到的,慢慢填补吧~ githu ...
- Python数据分析3------数据预处理(2)----字符串处理
- 汇编(assembling)简介(源:阮一峰)
简介 计算机真正能够理解的是低级语言,它专门用来控制硬件.汇编语言就是低级语言,直接描述/控制 CPU 的运行.如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言. 我们知 ...
- C语言基本语法——指针
1.什么是指针 2.指针用于参数 3.指针用于返回值 4.指针加减操作 5.指针与数组区别 1.什么是指针 • 内存被分为字节,每个字节有唯一的地址,指针指的就是内存地址. • 保存指针的变量,就叫指 ...
- "啃下"插入排序
插入排序法基本原理 插入排序法较冒泡排序法和选择排序法更贴近生活,应该来说理解起来更快.如果你现在能够得到一副麻将,请把里面的“一万”到“六万”拿出来,打乱顺序,再重新排好,就像打麻将开始那样.是否需 ...
- vuex中mutations与actions的区别
要执行vuex中的函数,有两种方法: 1.commit,例如this.$store.commit("GETMODULESELECTLIST"); //mutations中的方法 2 ...
- 8:30+1.5小时,返回时间格式的 php函数
一个实用的自定义函数 /** * 传入8:30格式的开始时间,和小数形式的小时长度,返回结束时间 * @param [type] $start [description] 8:30 * @param ...
- NYIST 1030 Yougth's Game[Ⅲ]
Yougth's Game[Ⅲ]时间限制:3000 ms | 内存限制:65535 KB难度:4 描述有一个长度为n的整数序列,A和B轮流取数,A先取,每次可以从左端或者右端取一个数,所有数都被取完时 ...
- POJ——T 3159 Candies
http://poj.org/problem?id=3159 Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 33328 ...