【发布时间】:2017-06-11 15:17:57
【问题描述】:
我想为我的旭日形添加鼠标滚轮缩放:
我所做的是我编辑了这段代码:
var zoom = d3.behavior.zoom()
.scaleExtent([1, 10])
.on("zoom", zoomed);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width/2 + "," + height * .52 + ")")
.call(zoom);
function zoomed() {
svg.attr('transform', 'translate(' + d3.event.transform.x + ',' + d3.event.transform.y + ') scale(' + d3.event.scale + ')');
//svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
问题是,当页面加载时,一切似乎都正常,但是当使用鼠标滚轮滚动时,旭日形图案最终出现在左上角:
我可以通过更改此代码来解决此问题:
function zoomed() {
svg.attr("transform", "translate(" + width/2 + "," + height * .52 + ")scale(" + d3.event.scale + ")");
}
旭日形现在停留在中间,然而这不会缩放到光标所在的位置,也不允许用户进一步缩小。
有什么建议我可以缩放到光标位置(如第一个代码示例中所示)而不会使左上角的旭日形消失?
完整代码见JSfiddle,这里不工作,但是在本地运行它工作。
【问题讨论】:
标签: javascript d3.js graph sunburst-diagram