【发布时间】:2016-08-04 16:19:28
【问题描述】:
我尝试在 d3.js(版本 4)中使我的 SVG 可缩放。
你可以在这里看到我的尝试:JSFiddle
HTML
<svg id="mySVG" width="800px" height="600px" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); background: lightgrey;">
<g>
<path d="M 0 0 L 100 0 L 100 20 L 0 20 Z" fill="red"></path>
<path d="M 500 500 L 600 500 L 600 520 L 500 520" fill="green"></path>
</g>
</svg>
JS
$(function() {
var svg = d3.select("#mySVG")
.call(d3.zoom().on("zoom", function () {
svg.attr("transform", "translate(" + d3.event.transform.x + " " + d3.event.transform.y + ") scale(" + d3.event.transform.k + ")");
}));
// For test purposes
//$('#mySVG').css('transform', 'scale(2)');
});
事实上,自从我检查 Google 的代码检查器并专注于我的 SVG 元素时,一切似乎都有效,我看到 translate 和 scale 的值随着鼠标滚轮向前/向后而变化。但是实际元素没有发生任何事情,这很奇怪,因为我还尝试通过纯 jQuery 更改这些缩放/转换值,并且 SVG 通过正确缩放来响应。
任何人都可以为我指出这项任务的正确方向吗?
为了记录,这里是d3.zoom()函数的官方文档。
【问题讨论】:
标签: javascript jquery d3.js svg zooming