亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

html5利用canvas繪畫二級樹形結構圖的示例

2024-08-26 00:20:01
字體:
來源:轉載
供稿:網友

上周需要做一個把頁面左側列表內容拖拽到右側區域,并且繪制成關系樹的功能。

看了設計圖,第一反應是用html/266906.html">canvas繪制關系線。

吭哧吭哧搞定這個功能后,發現用canvas繪圖,有一個很嚴重的缺陷。那就是如果左側關系特別多,需要繪制成百上千條時,而canvas畫布的寬高在寫dom的時候就已聲明。關系很多的情況下,無法使用canvas。

不過還是記錄一下研究成果。

下面是設計圖:

canvas,樹形,html5,樹形結構圖,html

做出效果如下:

canvas,樹形,html5,樹形結構圖,html

html、css代碼就不貼了。 js主要用到了拖拽、canvas繪制。

function startDrag(ev) {    ev.dataTransfer.setData("Text",ev.target.innerText);}function allowDrop(ev) {    ev.preventDefault();}function decideDrop(ev) {    ev.preventDefault();    var length = $('.main-target').length;    if(length == 0){        dropToMain(ev);    }else {        dropToRelate(ev);    }}function dropToMain(ev) {    var data=ev.dataTransfer.getData("Text");    var _html = '<div class="main-target">' + data + '</div>';    $('.main-target-wrap').width('auto').append(_html);}function dropToRelate(ev) {    //畫關系線    drawLineOne(document.getElementById('canvasOne'), 'begin');    drawLineOne(document.getElementById('canvasTwo'), 'end');    //插入圖片 以及圖片初始化點擊事件    var _img = $('<img src="inner.png">');    $('.imgBox').append(_img);    _img.click(showRelationBox);    //寫入數據    var data = ev.dataTransfer.getData('Text');    var _html = '<div class="item-text">' + data + '</div>';    $('.relation-text-box').append(_html);}

以上是拖拽的方法,我也是一邊看菜鳥教程,一邊寫出的拖拽方法。

function drawLineOne(canvas, flag) {    var context = canvas.getContext('2d');    var position = {};    if(flag == "begin"){        position = getCanvasOnePosition();    }else {        position = getCanvasTwoPosition();    }    context.beginPath();    context.moveTo(position.beginX, position.beginY);    context.lineTo(position.endX, position.endY);    if(position.endX2 && position.endY2){        context.lineTo(position.endX2, position.endY2);    }    context.strokeStyle = "#333";    context.stroke();}/** * 左側關系線 * @returns {{beginX: *, beginY: *, endX: *, endY: *}} */function getCanvasOnePosition() {    var imgLength = $('.imgBox img').length;    var beginX = (imgLength == 0) ? 0 : 77,        beginY = (imgLength == 0) ? 15 : (15 + 60 * (imgLength-1)),        endX = (imgLength == 0) ? 155 : 77,        endY = 60*imgLength + 15;    var position = {beginX: beginX, beginY: beginY, endX: endX, endY: endY};    if(imgLength > 0){        position.endX2 = 155;        position.endY2 = endY;    }    return position;}function getCanvasTwoPosition() {    var imgLength = $('.imgBox img').length;    var endY = 15 + 60*imgLength    return {beginX: 0, beginY: endY, endX: 155, endY: endY}}

以上是canvas畫線的方法,代碼沒什么難點,主要就是分析線的起始坐標麻煩一些。希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黑人巨大精品欧美一区免费视频| 九九热最新视频//这里只有精品| 欧美一级电影在线| 亚洲一区二区自拍| 伊人久久久久久久久久久久久| 欧洲精品毛片网站| 亚洲xxx自由成熟| 欧美性资源免费| 久久久噜噜噜久久久| 韩日欧美一区二区| 91精品国产网站| 精品亚洲永久免费精品| 欧美老少做受xxxx高潮| 欧美成人全部免费| 亚洲电影av在线| 日韩中文字幕在线播放| 欧美在线影院在线视频| 精品丝袜一区二区三区| 高清欧美性猛交xxxx| 亚洲人成绝费网站色www| 色综合五月天导航| 日韩在线视频播放| 自拍偷拍亚洲欧美| 米奇精品一区二区三区在线观看| 免费av在线一区| 欧美日韩在线看| 日本一区二三区好的精华液| 日韩av在线免费观看| 精品亚洲精品福利线在观看| 91精品视频网站| 88xx成人精品| 最新69国产成人精品视频免费| 97av在线视频| 91tv亚洲精品香蕉国产一区7ujn| 中文字幕国产亚洲| 久久中文久久字幕| 国产suv精品一区二区三区88区| 亚洲欧美日本精品| 岛国视频午夜一区免费在线观看| 日韩精品在线视频观看| 日韩在线观看免费| 亚洲一区二区日本| 国产精品久久一区主播| 91精品视频免费看| 亚洲免费小视频| 亚洲精品v天堂中文字幕| 日韩一区二区久久久| 亚洲电影免费观看| 成人午夜在线视频一区| 日本国产一区二区三区| 日本久久久久久久久久久| 欧洲成人在线视频| 视频直播国产精品| 国产不卡av在线| 亚洲欧美国产另类| 精品五月天久久| 亚洲bt欧美bt日本bt| 亚洲第一天堂无码专区| 国内揄拍国内精品少妇国语| 日韩亚洲精品视频| 97国产精品人人爽人人做| 一本色道久久88综合日韩精品| 国产精品福利在线观看| 久久久久久尹人网香蕉| 久久精品久久久久久国产 免费| 亚洲成人久久久久| 51精品国产黑色丝袜高跟鞋| 成人免费视频97| 亚洲国产精品久久久久秋霞蜜臀| 综合网中文字幕| 欧美激情在线观看| 91精品成人久久| 久久久免费av| 高清视频欧美一级| 国产成人精品在线播放| 成人激情免费在线| 日韩在线免费av| 狠狠躁夜夜躁人人躁婷婷91| 日韩高清人体午夜| 青青久久av北条麻妃海外网| 色老头一区二区三区在线观看| 欧美性xxxx极品hd满灌| 91精品国产91久久久久久久久| 日韩最新av在线| 国语自产精品视频在线看| 狠狠色噜噜狠狠狠狠97| 有码中文亚洲精品| 日韩高清人体午夜| 国产精品流白浆视频| 成人午夜在线视频一区| 91精品久久久久久久久中文字幕| 亚洲成人激情小说| 国产精品大陆在线观看| 日本久久中文字幕| 九九热r在线视频精品| 欧美一级视频一区二区| 亚洲大胆人体视频| 国产成人精品在线播放| 成人av资源在线播放| 国产精品入口免费视频一| 成人深夜直播免费观看| 色偷偷噜噜噜亚洲男人的天堂| 欧美华人在线视频| 奇米影视亚洲狠狠色| 亚洲综合中文字幕68页| 亚洲第一网中文字幕| 亚洲欧美三级在线| 人人澡人人澡人人看欧美| 久久免费视频在线观看| 中文字幕国产亚洲| 欧美性高跟鞋xxxxhd| 欧美专区在线播放| 日本午夜在线亚洲.国产| 亚洲福利小视频| 国产日韩综合一区二区性色av| 不卡av电影院| 欧美精品日韩www.p站| 亚洲美女免费精品视频在线观看| 亚洲精品国产综合久久| 97免费在线视频| 国产91精品不卡视频| 久久久久久久一区二区三区| 成人黄色中文字幕| 国产91精品黑色丝袜高跟鞋| 韩剧1988在线观看免费完整版| 欧美精品一区二区免费| 日韩经典中文字幕| 一本大道久久加勒比香蕉| 97久久精品人搡人人玩| www欧美日韩| 国产精品视频网站| 亚洲精品国产精品乱码不99按摩| 这里只有精品久久| 国产欧美精品一区二区| 亚洲va久久久噜噜噜| 欧美激情在线狂野欧美精品| 亚洲成人亚洲激情| 亚洲精品国产欧美| 国产精品女主播| 国产区亚洲区欧美区| 欧美日韩不卡合集视频| 色中色综合影院手机版在线观看| 4388成人网| 久久伊人色综合| 在线观看日韩av| 欧美乱大交做爰xxxⅹ性3| 亚洲free嫩bbb| 国产精品免费久久久| 在线电影av不卡网址| 久久偷看各类女兵18女厕嘘嘘| 57pao精品| 中文字幕欧美日韩在线| 国产午夜精品久久久| 日韩激情视频在线播放| 国产精品福利在线观看网址| 亚洲欧美日韩精品久久| 国产午夜精品麻豆| 日本免费久久高清视频| 日韩精品免费在线视频观看| 日本精品视频在线| 成人亲热视频网站| 欧美成人激情图片网| 色妞欧美日韩在线| 亚洲成人三级在线|