作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的“径向整洁树”:https://bl.ocks.org/mbostock/4063550
我正在尝试添加缩放和平移,但无法同时使缩放和平移正常工作。
我的代码看起来像这样:
var width = 1000,
height = 800;
var zoom = d3.zoom()
.scaleExtent([1 / 2, 4])
.on("zoom", zoomed);
var svg = d3.select('.svg-container').append("svg")
.attr("width", width)
.attr("height", height)
.attr('preserveAspectRatio', 'xMinYMin')
.call(zoom);
var g = svg.append("g").attr(
"transform",
"translate(" + width / 2 + "," + height / 2 + ") scale(1)"
);
function zoomed() {
g.attr(
"transform",
d3.event.transform
);
}
{k: 1, x: 0, y: 0}
function zoomed() {
var x = (width / 2) + d3.event.transform.x;
var y = (height / 2) + d3.event.transform.y;
g.attr(
"transform",
"translate(" + x + "," + y + ") scale(" + d3.event.transform.k + ")"
);
}
最佳答案
自 d3
存储元素缩放 itself ,它需要知道将成为缩放一部分的所有变换。在您的情况下,您已经通过 .attr
设置了初始位置调用(而不是缩放),所以 d3
不知道。要通过缩放设置它,请执行以下操作:
var width = 1000,
height = 800;
var zoom = d3.zoom()
.scaleExtent([1 / 2, 4])
.on("zoom", zoomed);
var svg = d3.select('.svg-container').append("svg")
.attr("width", width)
.attr("height", height)
.attr('preserveAspectRatio', 'xMinYMin')
.call(zoom);
var g = svg.append("g");
// set initial position via zoom
svg.call(zoom.transform, d3.zoomIdentity.translate(width/2, height/2));
function zoomed() {
g.attr(
"transform",
d3.event.transform
);
}
关于d3.js - 第一个缩放事件移除中心变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695396/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!