Javascript 如何将容器添加到force布局?
基于此力布局的简单基本示例: 我尝试添加一个带有滚动条的容器,称为Javascript 如何将容器添加到force布局?,javascript,css,d3.js,containers,force-layout,Javascript,Css,D3.js,Containers,Force Layout,基于此力布局的简单基本示例: 我尝试添加一个带有滚动条的容器,称为svg2,并将以下代码添加到force布局中: var content = document.getElementById('viz'); var svg2 = d3.select("#viz") .append("svg") .attr("width", 3000) .attr("height", 300); 还有这个div元素: <div class="container"> <div id="vi
svg2
,并将以下代码添加到force布局中:
var content = document.getElementById('viz');
var svg2 = d3.select("#viz")
.append("svg")
.attr("width", 3000)
.attr("height", 300);
还有这个div元素:
<div class="container">
<div id="viz" class="content"></div>
</div>
我只是想知道,我在这里做错了什么,因为容器根本没有出现。但是相同的代码在没有强制布局的空代码上工作。非常感谢你的帮助!以下是完整的代码:
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.link {
stroke: #ccc;
}
.node text {
pointer-events: none;
font: 10px sans-serif;
}
</style>
<div class="container">
<div id="viz" class="content"></div>
</div>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var content = document.getElementById('viz');
var svg2 = d3.select("#viz")
.append("svg")
.attr("width", 3000)
.attr("height", 300);
var width = 960,
height = 500
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var force = d3.layout.force()
.gravity(0.05)
.distance(100)
.charge(-100)
.size([width, height]);
d3.json("graph.json", function(error, json) {
if (error) throw error;
force
.nodes(json.nodes)
.links(json.links)
.start();
var link = svg.selectAll(".link")
.data(json.links)
.enter().append("line")
.attr("class", "link");
var node = svg.selectAll(".node")
.data(json.nodes)
.enter().append("g")
.attr("class", "node")
.call(force.drag);
node.append("image")
.attr("xlink:href", "https://github.com/favicon.ico")
.attr("x", -8)
.attr("y", -8)
.attr("width", 16)
.attr("height", 16);
node.append("text")
.attr("dx", 12)
.attr("dy", ".35em")
.text(function(d) { return d.name });
force.on("tick", function() {
link.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
});
});
</script>
.链接{
冲程:#ccc;
}
.节点文本{
指针事件:无;
字体:10px无衬线;
}
var content=document.getElementById('viz');
var svg2=d3.选择(“即”)
.append(“svg”)
.attr(“宽度”,3000)
.attr(“高度”,300);
可变宽度=960,
高度=500
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度);
var-force=d3.layout.force()
.重力(0.05)
.距离(100)
。收费(-100)
.尺寸([宽度、高度]);
d3.json(“graph.json”,函数(错误,json){
如果(错误)抛出错误;
力
.nodes(json.nodes)
.links(json.links)
.start();
var link=svg.selectAll(“.link”)
.data(json.links)
.enter().append(“行”)
.attr(“类”、“链接”);
var node=svg.selectAll(“.node”)
.data(json.nodes)
.enter().append(“g”)
.attr(“类”、“节点”)
.呼叫(强制拖动);
node.append(“图像”)
.attr(“xlink:href,”https://github.com/favicon.ico")
.attr(“x”,-8)
.attr(“y”,-8)
.attr(“宽度”,16)
.attr(“高度”,16);
node.append(“文本”)
.attr(“dx”,12)
.attr(“dy”,“.35em”)
.text(函数(d){返回d.name});
force.on(“勾号”,函数(){
attr(“x1”,函数(d){返回d.source.x;})
.attr(“y1”,函数(d){返回d.source.y;})
.attr(“x2”,函数(d){返回d.target.x;})
.attr(“y2”,函数(d){返回d.target.y;});
attr(“transform”,函数(d){return“translate”(“+d.x+”,“+d.y+”)”);});
});
});
该div是否在正文外?您的HTML仍然不正确。请重新编辑。首先,您没有关闭正文。第二,div在脚本中。现在它又在主体之外了!如果你不分享你的HTML的确切结构,这将无法帮助你。请发布你的解决方案