Можно ли использовать d3.js layout.force для (пере) размещения элементов, отличных от svg, таких как div?
Если у div есть position: absolute;
, возможно left
и top
можно использовать как эквивалентдля атрибутов x1
и y1
, используемых для элементов svg?
Цель состоит в том, чтобы иметь некоторые принудительные эффекты для изображений и пунктов меню с поддержкой IE8.Мне известно о том, что узлы svg могут быть изображениями, но поскольку мне нужно поддерживать IE8, это не вариант.
Если это невозможно, используется svgweb вместе с d3.jsстабильный вариант для этой цели?
Спасибо!
** Обновление **
D3 это круто !!Я начинаю понимать это, и вполне возможно использовать « сила » на обычных HTML-элементах, таких как div, так как d3.layout.force()
, по сути, дает вам координаты x и y для каждого «тика» (или рамку), которые вы можете использовать по своему усмотрению.
то есть:
force.nodes(data)
.on("tick", tick)
.start();
function tick() {
div.style("left", function(d) {return d.x+"px"})
.style("top", function(d) {return d.y+"px"});
}
работает просто отлично!
перетаскивание с .call(force.drag);
действительно доставляет вам проблемы (как и ожидалось)).
firebug:
(container.ownerSVGElement || container).createSVGPoint is not a function
d3_svg_mousePoint()d3.js (line 3718)
container = div#nav
e = mousemove clientX=607, clientY=200
mouse()d3.js (line 3711)
container = div#nav
d3_behavior_dragPoint()d3.js (line 4481)
d3_behavior_dragDispatch()d3.js (line 4453)
type = "drag"
d3_behavior_dragMove()d3.js (line 4491)
l()d3.js (line 1871)
e = mousemove clientX=607, clientY=200
[Break On This Error]
var point = (container.ownerSVGElement || container).createSVGPoint();
Должно быть исправимо.