自制轮子 canvas tree
这是树的效果
这个树拥有的功能有
1、小地图显示
2、小地图点击快速定位
3、点击加减显示根节点
4、基本的数显示
5、节点拖拽
6、点击头像跳转到相关页面
7、使用直角线和直线选择
8、画布自适应
9、滚动条自动居中
具体如何实现原理是通过点击画布的XY点来确定你进行了什么操作,点击了什么节点,改变数据,然后通过数据来重新渲染画布。
其实使用canvas入门还是挺简单的跟着api敲一下就你就会了解。
canvas的api:http://www.w3school.com.cn/tags/html_ref_canvas.asp
HTML事件的api:http://www.w3school.com.cn/tags/html_ref_eventattributes.asp
中间遇到的问题:
1、图片不显示,闪屏的问题(以解决)----img.onload,根级一次加载就好。
2、各种逻辑如何遍历,查找节点等。
3、定义规矩。交互原则。
这是我的树的代码
See the Pen zNNjmW by to_Matthew (@to_Matthew) on CodePen.
自制轮子 canvas tree的更多相关文章
- jQuery的使用及关于框架造型(转)
		Introduction 正如jQuery所宣称的一样,Write Less, Do More.很多时候我们喜欢用它来解决问题.但增加一个库必然意味着更大的网络负担,意味着更高的页面初始载入时间.并且 ... 
- boost 介绍
		简介: Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容 ... 
- jQuery的使用及关于框架造型  专题
		Introduction 正如jQuery所宣称的一样,Write Less, Do More.很多时候我们喜欢用它来解决问题.但增加一个库必然意味着更大的网络负担,意味着更高的页面初始载入时间.并且 ... 
- Boost程序库完全开发指南——深入C++“准”标准库(第3版)
		内容简介 · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ... 
- Java的LockSupport.park()实现分析
		LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了主要的线程同步原语.LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,仅仅有两个函数: ... 
- 4.锁定--Java的LockSupport.park()实现分析
		LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了主要的线程同步原语. LockSupport实际上是调用了Unsafe类里的函数.归结到Unsafe里,仅仅有两个函数: ... 
- createjs 小游戏开发实战
		[转载请注明出处] 紧接着上一篇文章createjs入门:http://www.cnblogs.com/beidan/p/7055422.html 这里来一篇小游戏实战篇. 游戏整体思路实现 1. 实 ... 
- Java的LockSupport.park()实现分析(转载)
		LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语.LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: p ... 
- 详解Java多线程编程中LockSupport类的线程阻塞用法
		LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语.LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: p ... 
随机推荐
- Vim、Linux、Shell、Idea、Git命令总结
			目录 Vim 剪切 复制 shell idea centos Vim /名字 搜索关键词 :u 撤销上一次操作 v 进入可视模式(选中模式) 剪切 回到顶部 命令模式下的剪切 dd,删除一整行==剪切 ... 
- JDBC连接mysql数据库操作详解
			1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ... 
- 基于SpringBoot从零构建博客网站 - 新增创建、修改、删除专栏功能
			守望博客是支持创建专栏的功能,即可以将一系列相关的文章归档到专栏中,方便用户管理和查阅文章.这里主要讲解专栏的创建.修改和删除功能,至于专栏还涉及其它的功能,例如关注专栏等后续会穿插着介绍. 1.创建 ... 
- JDBC秒变C3P0连接池——再加连接解耦
			从JDBC连接到C3P0数据库连接池 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ② ... 
- 【iOS】安装 CocoaPods
			1. 打开 terminal 2. 移除现有 Ruby 默认源 $ gem sources --remove https://rubygems.org/ 3. 使用新的源 $ gem sources ... 
- android 基于wifi模块通信开发
			这篇文章主要是我写完手机与wifi模块通信后所用来总结编写过程的文章,下面,我分几点来说一下编写的大概流程. 一.拉出按钮控件并设置它的点击事件 二.设置wifi权限 三.打开和关闭wifi 四.扫描 ... 
- Web项目如何做单元测试
			你可能会用单元测试框架,python的unittest.pytest,Java的Junit.testNG等. 那么你会做单元测试么!当然了,这有什么难的? test_demo.py def inc(x ... 
- java根据经纬度查询门店地理位置-完美解决附近门店问题
			1.首先我们需要创建一个门店表如下: CREATE TABLE `app_store` ( `store_id` ) NOT NULL AUTO_INCREMENT COMMENT '发布id', ` ... 
- mysql 输入show databases 没反应
			我是小白,大佬勿喷 *** mysql 输入show databases 没反应 一句话 不要忘记使用MySQL时在命令后加;哦 * * * 在Linux输入以下命令 mysql 终端显示以下文本 W ... 
- Javasrcipt中从一个url或者从一个字符串中获取参数值得方法
			从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似). 首先看url的规范: URL组成:protocol :// ... 
