html5利用canvas绘画二级树形结构图


当前第2页 返回上一页

html、css代码就不贴了。 js主要用到了拖拽、canvas绘制。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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 = '<p class="main-target">' + data + '</p>';

    $('.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 = '<p class="item-text">' + data + '</p>';

    $('.relation-text-box').append(_html);

}

以上是拖拽的方法,我也是一边看菜鸟教程,一边写出的拖拽方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

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}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

利用Canvas模仿百度贴吧客户端loading小球的方法

canvas绘制各种基本图形

html5使用html2canvas实现浏览器截图

以上就是html5利用canvas绘画二级树形结构图的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

html如何实现文本上下居中

html怎么设置a标签居中

html指什么

html5中创建和返回新的文本轨道的方法

如何实现html不显示下拉列表的箭头

html里无法显示背景颜色的解决方法

html如何设置标题居中

html summary标签怎么用

详解7款绚丽的jquery/html5动画及源码

html怎么在文本中保留空格

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...