Ich benutze d3js, um einen Baum zu bauen, weil die Baumgröße sehr groß ist, und mein Container ist klein, so kann das Div die Svg-Komponente beim Laden der Seite nicht zeigen diese image on loadZentrierung der Svg-Komponente nach der Zoom-Funktion in d3js
um den Baum zu zeigen, muss ich die Ansicht vergrößern und ziehen Sie die sVG-Komponente, wie dieses zoomed image
gibt es eine Möglichkeit, die svg Komponente innerhalb des sVG, wenn die Seite Last zu zentrieren ?
hier ist mein Code
<style>
.node circle {
fill: #fff;
stroke: steelblue;
stroke-width: 1.5px;
}
.node {
font: 10px sans-serif;
}
.link {
fill: none;
stroke: #ccc;
stroke-width: 1.5px;
}
</style>
<!--<img src="../image/dummy5.svg" style='width:100%;margin:3px 0;'/>-->
<script src="http://d3js.org/d3.v3.min.js"></script>
<!--******* vertical *******-->
<script>
var treeData = [
<?php echo "{'name' : 'CDS','icon': '../image/logo.png','padding':'0','user_id': 'CDS','level':'CDS','children' : ["; echo get_node_ul_frm_adm ($DBconn, 1); echo "]}"; ?>];
var width = $("#agent-tree").width(),
height = 2200;
var cluster = d3.layout.tree()
.nodeSize([100, 200])
.separation(function(){
return .5;
})
.size([height, width - 160]);
var zoom = d3.behavior.zoom().on("zoom", function() {
svg.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")")
})
var svg = d3.select("#agent-tree").append("svg")
.attr("width", width)
.attr("height", height)
.attr("object-fit", "cover")
.call(zoom)
.append("g")
.attr("transform", "translate(40,0)");
root = treeData[0];
var nodes = cluster.nodes(root).reverse();
nodes.forEach(function(d) { d.y = d.depth * 100; });
var link = svg.selectAll(".link")
.data(cluster.links(nodes))
.enter().append("path")
.attr("class", "link")
.attr("d", elbow);
var node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
node.append("circle")
.attr("transform", function(d) { return "translate(0,"+d.padding+")"; })
.attr("r", 12.5);
function elbow(d) {
return "M" + d.source.x + "," + d.source.y
+ "H" + ((d.target.x-d.source.x)/2,d.source.x)
+ "V" + d.target.y
+ "H" + d.target.x
+ "v" + ((d.source.y-d.target.y)/2,42);
}
</script>
Ich nehme an, meine Antwort ist nicht das, was Sie wollen? – thatOneGuy