Reputation: 4428
I am trying to scale nodes (circle tags) in D3 force layout with CSS, like this
circle:hover {
-webkit-transform: scale(1.5, 1.5);
}
The node is scaled, but it also moves away from upper left corner the same amount, like the whole layer was scaled. Nothing else (except the node) is scaled however.
I have no example to show at the moment. I would be glad for suggestions about what is going on there.
I got the idea from the answer by Jonathan Sewell here:
UPDATE: I forked a fiddle and added the transform. So here is a live example: http://jsfiddle.net/UagSD/3/
Upvotes: 1
Views: 523
Reputation: 2184
I don't think that you can do it with css because the radius cannot be set with css.But you can do it using d3 mouseover and mouseout event as below
var nodes =svg.selectAll(".node") .data(data) .enter().append("circle") .attr("class", "node") .attr("r", 40) .on("mouseover", function(d){d3.select(this).transition().attr("r",60)}) .on("mouseout", function(d){d3.select(this).transition().attr("r",40)}) .call(force.drag);
Here http://jsfiddle.net/N99Az/ is the fiddle
Upvotes: 0
Reputation: 10157
You may want to specify in your CSS the transform origin point like this (with the vendor prefixed versions if you need it) :
transform-origin: center center
Upvotes: 3