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
随机推荐
- thinkphp 5 count()方法在控制器,模板中的使用方法
thinkphp中关于count()方法的使用: 控制器中:echo count($arr)模板中:{$arr | count}模板中if判断语句中 <if condition="co ...
- Mac Dropbox 文件不显示同步图标 解决
前言 开始时关了这个功能,今天想打开发现怎么也恢复不了. 按照官方教程说的重装也无济于事.最后在官方BBS发现一篇帖子顺利解决了问题 解决方案 这哥们意思是说禁用了一个Finder的插件就好了(有意思 ...
- CDR查找替换对象操作详解
您可以使用CorelDRAW软件中提供的查找和替换向导,在绘图中定位和编辑对象.这在设计绘图中经常用到,查找和替换中为用户提供多种搜索方法,其中包括包含对象类型及其相关属性.填充和轮廓属性.应用于对象 ...
- Debian下签名无法验证
又收集到的新方法 gpg --keyserver subkeys.pgp.net --recv-keys AED4B06F473041FA && apt-key add /root ...
- CF993C Careful Maneuvering bitset_枚举
Code: #include<cstdio> #include<map> #include<iostream> #include<cmath> #inc ...
- sklearn学习7-----决策树(tree)
1.使用示例 2.树模型参数:[很多参数都是用来限制树过于庞大,即担心其过拟合] # 1.criterion gini or entropy:用什么作为衡量标准 ( 熵值或者Gini系数 ). ...
- jQuery中的DatePicker今天按钮不起作用
转载:http://codego.net/63433/ jquery-ui 日期选择器datepicker我想用 jQueryUI 的 DatePicker ,并显示“今天”按钮, 但它不工作,它也不 ...
- [读书笔记] Python 数据分析 (十一)经济和金融数据应用
resample: 重采样函数,可以按照时间来提高或者降低采样频率,fill_method可以使用不同的填充方式. pandas.data_range 的freq参数枚举: Alias Descrip ...
- Golang-and-package-version-managment
参考文章 学习Golang之后对golang中的版本管理,包管理等机制一直没有很好的琢磨,偶然想起还是觉得很有必要进行归纳,包管理使用起来简单,无非就是install,uninstall,list等, ...
- 洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows
P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...