gpt4 book ai didi

javascript - SVG 在使用特定比例和位置初始化后返回到其默认比例和位置

转载 作者:行者123 更新时间:2023-11-29 20:57:46 25 4
gpt4 key购买 nike

我正在尝试通过将其比例和位置设置为特定值来初始化 svg 并且它有效但是当用户尝试缩放或拖动 svg 时出现问题,它立即返回到其默认比例和位置,如您所见在这个JSFiddle Example (尝试缩放或拖动 svg 以查看问题),如果有办法设置 d3.event.scaled3.event.translate 属性,但似乎这些属性是只读的。这是我的代码:

var scale=0.5,translate=[25,800];

var svg = d3.select("svg");
var g = svg.select("g");

svg.attr("width", "100%")
.attr("height", "100%")
.attr('viewBox', '0 0 1200 1200').attr("preserveAspectRatio", "xMidYMid
meet").call(d3.behavior.zoom().on("zoom", function() {
g.attr("transform", "translate(" + translate + ")" + " scale(" + scale +
")");
scale = d3.event.scale;
translate = d3.event.translate;
}));

g.attr("transform", "translate(" + translate + ")" + " scale(" + scale + ")");

最佳答案

这个答案是指 d3.v3 版本,在 v4 中我们会使用 d3.zoomIdentity

您需要将translatescale 值传递给缩放函数,并且您还需要初始翻译g 元素

var g = svg.select("g")
.attr("transform", "translate(" + translate + ")" + " scale(" + scale + ")")

相关片段

svg.attr("width", "100%")
.attr("height", "100%")
.attr('viewBox', '0 0 1200 1200').attr("preserveAspectRatio", "xMidYMid meet")
.call(d3.behavior.zoom()
.translate(translate) // ADDED THIS
.scale(scale) // AND THIS
.on("zoom", function () {
scale = d3.event.scale;
translate = d3.event.translate;
g.attr("transform", "translate(" + translate + ")" + " scale(" + scale + ")");
}));

Check out updated JSFiddle

关于javascript - SVG 在使用特定比例和位置初始化后返回到其默认比例和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com