$.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 连线曲线图封装的更多相关文章

  1. canvas 连线曲线图

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...

  2. 兼容IE浏览器的canvas画线和圆圈

    1.新建test.html文件,代码如下: <!DOCTYPE html><html><head>    <meta charset="utf-8& ...

  3. canvas 画线

    一.canvas是基于状态的绘图环境 1.canvas是基于状态的绘制 context.moveTo(100,100); context.lineTo(700,700); context.lineWi ...

  4. canvas绘制线和矩形

    ###canvas绘制矩形 HTML中的元素canvas只支持一种原生的图形绘制:矩形.所有其他的图形的绘制都至少需要生成一条路径 1.绘制矩形 canvas提供了三种方法绘制矩形: ----> ...

  5. uniapp 封装 request 并 配置跨域,( 本地 + 线上 + 封装 )

    找到上面这个 文件,不管是用 命令创建 还是 用 HBX 创建,都一样会有这个文件的,然后跟着截图复制粘贴就好了. // 这是配置本地能跨域的,或者你可以直接让后端给你设置请求头,避免了跨域. &qu ...

  6. canvas sprite动画 简单封装

    function SpritCtx(img, size, pos, turnTime, totalCount, ctx) { size = size || {}; pos = pos || {}; / ...

  7. canvas连线特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. canvas 添加线和删除线 及获取相关位置信息源码

    其他相关链接: https://github.com/lusase/lineDrawer.git https://www.jb51.net/css/359062.html https://www.jb ...

  9. HTML5之Canvas绘图实例——曲线图

    实现正弦.余弦和正切函数画图(如下图):调试环境:Firefox

随机推荐

  1. 手游服务器端接入facebook的SDK

    手游如果支持facebook登录,就要接入facebook的登录SDK.刚好工作中自己做了这一块的接入功能现在记录分享下来提供一个参考. 当前只是接入了登录这个功能,先简单的说说接入facebook登 ...

  2. iOS原生数据存储策略

    一 @interface NSCache : NSObject Description A mutable collection you use to temporarily store transi ...

  3. ZBrush模型的细分

    在ZBrush®中对模型进行雕刻时,随着细节越来越丰富,原有的面数已经不能满足我们对细节的要求,为了得到更多的细节,我们就必须增加模型的面数,让更多的面来支持我们进行雕刻,如下图(左)和下图(右)所示 ...

  4. es6——Proxy和Reflect

    Proxy代理,Reflect反射 Proxy对属性的读取 { //供应商,原始对象 let obj={ time:'2017-1-1', name:'net', _r:123 } //代理商,新生成 ...

  5. Vue-给对象新增属性(使用Vue.$set())

    在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官方文档定义 ...

  6. tomcat 映射虚拟路径

    编辑server.xml   在  <Host></Host>中添加 <Context path="/renbao/img/" docBase=&qu ...

  7. vivo输入法 需求分析

    我使用的输入法:vivo输入法 1,用户界面:界面为白色和灰色,整体简洁大方,个人而言外观挺不错.但是不能自定义界面,更改背景图片或是主题. 2,记住用户选择:可记忆上次使用后的键盘方式(26键或是9 ...

  8. js 如何判断浏览器是否禁用cookie

    语法:navigator.cookieEnabled: 如果浏览器启用了cookie,该属性值为true.如果禁用了cookie,则值为false. navigator: JavaScript中的一个 ...

  9. Spring配置文件中指定init-method属性的作用

    bean 配置文件属性 init-method 用于在bean初始化时指定执行方法,用来替代继承 InitializingBean接口.相关链接:https://www.cnblogs.com/Joe ...

  10. JavaScript push(),join() 函数

    定义和用法 push方法 可向数组的末尾添加一个或多个元素,并返回一个新的长度. join方法 用于把数组中所有元素添加到一个指定的字符串,元素是通过指定的分隔符进行分割的. 语法 arrayObje ...