gpt4 book ai didi

javascript - 如何在 d3.js 中重置 Zoom?

转载 作者:行者123 更新时间:2023-11-29 10:03:39 25 4
gpt4 key购买 nike

我有一个简单的 svg 矩形,我使用 d3.js 在其上添加了缩放和平移。我还添加了一个按钮,以便在单击该按钮后尝试重置缩放。这是代码:

<button>Reset</button>
<body>
<script>

function zoomed() {
svg.attr("transform", d3.event.transform)
}

var svg = d3.select("body")
.append("svg")
.attr("width", "100%")
.attr("height", "100%")
.call(d3.zoom().on("zoom", zoomed))
.append("g")

svg.append("rect")
.attr("x", 450)
.attr("y", 200)
.attr("width", 300)
.attr("height", 200)
.style("fill", "#B8DEE6")

$("#Reset").click(() => {
zoom.transform(container, d3.zoomIdentity.scale(1));
})

</script>
</body>

我试过 zoom.transform(container, d3.zoomIdentity.scale(1)) 但它似乎不起作用。谁能告诉我重置功能有什么问题?

最佳答案

你需要这样重写你的代码:

function zoomed() {
gElem.attr("transform", d3.event.transform)
}

var zoom = d3.zoom().on("zoom", zoomed);

var svg = d3.select("body")
.append("svg")
.attr("width", "600")
.attr("height", "600")


var gElem = svg.append("g").call(zoom);

gElem.append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 300)
.attr("height", 200)
.style("fill", "#B8DEE6")

$("#Reset").click(() => {
gElem.transition()
.duration(750)
.call(zoom.transform, d3.zoomIdentity);
});

查看演示:

function zoomed() {
gElem.attr("transform", d3.event.transform)
}

var zoom = d3.zoom().on("zoom", zoomed);

var svg = d3.select("body")
.append("svg")
.attr("width", "400")
.attr("height", "200")


var gElem = svg.append("g").call(zoom);

gElem.append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 300)
.attr("height", 200)
.style("fill", "#B8DEE6")

$("#Reset").click(() => {
gElem.transition()
.duration(750)
.call(zoom.transform, d3.zoomIdentity);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="Reset">RESET</button>

关于javascript - 如何在 d3.js 中重置 Zoom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790190/

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