我想在可编辑的d3可视化文本中使用,以便在编辑器中使用。我开始玩这个例子(http://bl.ocks.org/mbostock/4063550)。当我将一个dragbeheavier添加到文本元素时,我可以从ChromeDevTools中知道拖动了哪些东西,但是拖动时没有可视化表示。我也尝试过使用JQuery UI做什么都不起作用。我错过了什么,甚至有可能这样做?使用d3.js制作可拖动的SVG文本
5
A
回答
11
您可以使用drag.behaviour将拖动事件添加到元素。
1)创建一个函数来处理(的d3.event型)的拖拽事件:
function dragmove(d) {
d3.select(this)
.style("top", ((d3.event.sourceEvent.pageY) - this.offsetHeight/2)+"px")
.style("left", ((d3.event.sourceEvent.pageX) - this.offsetWidth/2)+"px")
}
2)使用上述功能的处理程序创建拖动行为:
var drag = d3.behavior.drag()
.on("drag", dragmove);
3)绑定它到一个元素或一组元素使用.call
对d3的选择:
d3.select("body").append("div")
.attr("id", "draggable")
.text("Drag me bro!")
.call(drag)
尝试:http://jsfiddle.net/HvkgN/2/
这里是相同的例子,adapted for an svg text element:
function dragmove(d) {
d3.select(this)
.attr("y", d3.event.y)
.attr("x", d3.event.x)
}
var drag = d3.behavior.drag()
.on("drag", dragmove);
d3.select("body").append("svg")
.attr("height", 300)
.attr("width", 300)
.append("text")
.attr("x", 150)
.attr("y", 150)
.attr("id", "draggable")
.text("Drag me bro!")
.call(drag)
2
更好看 - 的方式来增加拖动到SVG元素是使用翻译转换,围绕移动拖动元素。将它与一个使用d3.event.dx和d3.event.dy监视鼠标移动的拖动事件处理程序结合使用。
var transX = 0;
var transY = 0;
var theElement = d3.select('svg#xyz text.blahblah').attr('transform', "translate(" + transX + ", " + transY + ")");
var repositionElement = function(data) {
transX += d3.event.dx;
transY += d3.event.dy;
theElement.attr('transform', "translate(" + transX + ", " + transY + ")");
};
var addDragging = function (element) {
element.call(d3.behavior.drag().on('drag', repositionElement));
};
addDragging(theElement);
此外,不同于改变x/y的直接,这种技术可以用来使整个<g>
组拖动,因此用户点击时和拖动组,整组移动时的任何部分!
相关问题
- 1. 如何使用d3.js拖动行为来拖动svg组?
- 2. 使用D3.js限制SVG中文本元素的宽度
- 3. 拖动问题与d3.js
- 4. 使用D3拖动路径
- 5. D3.js自定义SVG作为背景
- 6. 使用d3 js在IE中不工作的SVG过滤器
- 7. 如何制作<g> svg集群内的svg-group可拖动
- 8. d3.js缩放/拖动散点图
- 9. D3.js调整大小并拖动
- 10. 箭头SVG梯度d3.js
- 11. SVG到画布与d3.js
- 12. 如何限制在mercator地图上的d3.js拖动行为
- 13. D3 JS - 包含SVG矩形的组在拖动时不能平滑地转换
- 14. 有没有办法在svg d3.js中添加拖放?
- 15. d3:使d3.svg.axis上的刻度线可以拖动?
- 16. 制作项目可拖动
- 17. D3.js - 围绕一个点旋转svg文本
- 18. 制作可重复使用的svg实体所需的d3结构是什么
- 19. D3使g元素拖动
- 20. 如何使用d3.js从CSV文件制作散点图?
- 21. d3 SVG拖放加旋转按钮
- 22. 按钮ouside d3.js svg选择和修改d3.js元素
- 23. 创建一个可拖动的Svg组
- 24. 使用d3.js
- 25. 使用d3.js
- 26. 使用D3 JS
- 27. D3.js v4使用链接力强制布局会在使用拖动行为时导致奇怪的移动
- 28. D3.js - 更新svg路径的标题
- 29. D3.js - “svg:rect”中的“svg:”必须是?
- 30. 使用基于d3.js的制图库
对不起,我的意思是..我有我需要拖动的SVG文本元素,他们不响应.call(拖动) – chenninger 2013-04-30 10:39:46
@chenninger这不是这里的例子吗? – Phrogz 2013-04-30 13:05:27
@chenninger我更新了一个svg文本元素的例子!对困惑感到抱歉。 – minikomi 2013-04-30 23:46:10