d3中元素拖拽drag实例
2016-07-25 14:29
441 查看
参考链接:http://blog.csdn.net/lzhlzz/article/details/42200579
https://github.com/d3/d3-3.x-api-reference/blob/master/Drag-Behavior.md
使用拖拽功能我们可以快速将图标展示成我们需要的样子。
d3.behavior.drag()用来构造一个拖拽行为。如果让元素响应这个行为需要使用call()函数,例如
使用drag.on()函数来监听一个事件,函数语法为
drag.origin()定义拖拽的原点,默认原点为鼠标点击的位置,这也会造成元素跳动。指定的原点访问器必须返回一个包含被拖动元素开始坐标
下面就是一个拖拽元素的实例:
演示地址:http://justforuse.cn/d3/d3.drag/
https://github.com/d3/d3-3.x-api-reference/blob/master/Drag-Behavior.md
使用拖拽功能我们可以快速将图标展示成我们需要的样子。
d3.behavior.drag()用来构造一个拖拽行为。如果让元素响应这个行为需要使用call()函数,例如
selection.call(drag)。
使用drag.on()函数来监听一个事件,函数语法为
drag.on(type [, listener])type表示时间类型,除了
drag还有
dragstart和
dragend。
drag.origin()定义拖拽的原点,默认原点为鼠标点击的位置,这也会造成元素跳动。指定的原点访问器必须返回一个包含被拖动元素开始坐标
x和
y的对象;
下面就是一个拖拽元素的实例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="../d3.v3.js"></script> </head> <body> <script> var width = "100%", height = 300; var circles = [{ cx: 150, cy: 200, r: 40 }, { cx: 250, cy: 200, r: 40 }]; //添加画布并设置画布大小 var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) var drag = d3.behavior.drag() //定义了元素拖拽行为的原点,设置为圆的圆心位置可以避免明显的元素跳动,第一个参考连接中的例子可以看到明显的跳动 .origin(function() { var t = d3.select(this); return { x: t.attr("cx"), y: t.attr("cy") }; }) .on("drag", dragmove); svg.selectAll("circle") .data(circles) .enter() .append("circle") .attr("cx", function(d, i) { return d.cx; }) .attr("cy", function(d, i) { return d.cy; }) .attr("r", function(d, i) { return d.r; }) .attr("fill", "lime") .attr("stroke", "white") //为元素添加拖拽事件 .call(drag); //定义拖拽行为,此处为重新设置元素圆心位置 function dragmove(d) { d3.select(this) .attr("cx", function() { return d.cx = d3.event.x }) .attr("cy", d.cy = d3.event.y) } </script> </body> </html>
演示地址:http://justforuse.cn/d3/d3.drag/
相关文章推荐
- 转载z转载
- UVA 1635 Irrelevant Elements [唯一分解定理]
- C++: string的大小写转换
- 辣鸡的最短路&差分约束题目计划
- 浮动页头页脚,内容自适应高度(手机端常见)
- html 绘图
- 美国大选选民登记数据在暗网大肆贩卖
- Python 类货币四舍五入规则
- Java通过CMD命令启动和停止外部应用程序
- Android应用学习记录------通讯录的增,删,改,查
- hdu5536(字典树的插入和删除)
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- java synchronized详解
- DataSet
- 远程桌面windows组合键的处理
- Android原型设计工具探索
- MYeclipse中使用maven插件的时候,运行run as maven build的时候报错
- Markdown语法简介
- POJ 2689 素数打表再打表