【发布时间】:2017-10-19 18:44:36
【问题描述】:
我可以在 d3.js 的一个屏幕上使用 2 个 svg。代码看起来像这样,效果很好:
<svg width="880" height="800" id="svg1"></svg>
<svg width="880" height="800" id="svg2"></svg>
var svg1 = d3.select("#svg1");
var svg2 = d3.select("#svg2");
我唯一的问题是,svg2 出现在 svg1 下。但我的目标是将它们并排放置。你们知道如何解决这个问题吗?我试图用这段代码操纵 svg2 的 x 位置:
<svg cx="880" cy"100" width="880" height="800" id="svg2"></svg>
但这不是正确的解决方案。 谢谢大家!!
【问题讨论】:
-
有很多方法可以将它们并排移动,但要让你的 SVG “响应式”,你需要用视图框替换宽度和高度属性。
-
默认情况下 SVG 将并排放置,您不必定义 viewBox 或任何东西,但前提是它们有足够的空间。在这里查看我的答案:stackoverflow.com/a/39178944/5768908。您的窗口宽度可能没有 1760 像素。
-
默认 svg 是一个块元素。使它们内联块并排显示
-
我不明白为什么上面的评论有 2 个“赞成票”... SVG 默认是内联的:developer.mozilla.org/en-US/docs/Web/SVG/Attribute/display 同样,这在我的链接答案中非常清楚。
-
您需要专门使父容器足够宽以将它们并排放置。 See my answer to this question.
标签: javascript html css d3.js svg