Javascript 重置D3缩放平移
我试图在D3中创建一个可拖动的元素,它不会拖动到页面之外。 如本例所示: 换句话说,我不想看到红色矩形后面的背景 为此,我正在检查Javascript 重置D3缩放平移,javascript,d3.js,Javascript,D3.js,我试图在D3中创建一个可拖动的元素,它不会拖动到页面之外。 如本例所示: 换句话说,我不想看到红色矩形后面的背景 为此,我正在检查zoom.translate()[0]是否大于0,并手动将其设置为0 这很好,但问题是当我再次向左拖动时,zoom.translate()x值仍然是原始值,而不是我手动设置的值(除非我在向左拖动之前释放鼠标单击) 有人知道我是如何使zoom.translate值保持不变的吗 谢谢 var margin = {top: 20, right: 10, bottom:
zoom.translate()[0]
是否大于0
,并手动将其设置为0
这很好,但问题是当我再次向左拖动时,zoom.translate()
x值仍然是原始值,而不是我手动设置的值(除非我在向左拖动之前释放鼠标单击)
有人知道我是如何使zoom.translate
值保持不变的吗
谢谢
var margin = {top: 20, right: 10, bottom: 20, left: 10};
var width = 600;
var height = 600;
var zoom = d3.behavior.zoom()
.scaleExtent([0.5, 10])
.on("zoom", zoomed);
var svg = d3.select('body').append('svg')
.attr('class', 'chart')
.attr('width', width)
.attr('height', height)
.append('g')
.attr("transform", "translate(" + margin.left + "," + margin.right + ")")
.call(zoom);
rect = svg.append("rect")
.attr("width", width)
.attr("height", height)
.style("fill", "none")
.style("pointer-events", "all");
svg.append("g")
.append("rect")
.attr("class", "rectangle")
.attr('width', width)
.attr('height', height);
function zoomed() {
console.log('1: ', zoom.translate());
if (zoom.translate()[0] > 0) {
//zoom.translate([0, zoom.translate()[1]]);
//console.log('2: ', zoom.translate());
}
svg.attr("transform", "translate(" + zoom.translate() + ")scale(" + zoom.scale() + ")");
}