还有另一种方法,不需要重新绘制图形,它涉及修改元素上的viewBox和preserveAspectRatio属性
<svg>:
<svg id="chart" width="960" height="500" viewBox="0 0 960 500" preserveAspectRatio="xMidYMid meet"></svg>
15年11月24日更新
:大多数现代浏览器都可以从推断出SVG元素的长宽比
viewBox,因此您可能不需要保持图表的大小为最新。如果需要支持较旧的浏览器,可以在窗口调整大小时调整元素的大小,如下所示:
var aspect = width / height, chart = d3.select('#chart');d3.select(window) .on("resize", function() { var targetWidth = chart.node().getBoundingClientRect().width; chart.attr("width", targetWidth); chart.attr("height", targetWidth / aspect); });svg的内容将自动缩放。您可以在此处看到一个有效的示例(进行了一些修改):只需调整窗口或右下窗格的大小即可查看其反应。



