我正在进行一个JS项目的初期阶段。目前一切都很顺利,除了一个形状的定位问题。这个形状是一个青色的菱形(旋转45度的正方形)。我可以将正方形轻松地放在屏幕上,但当我添加以下内容时:
.attr("transform", "rotate(45)")
方块可以正确旋转,但是会向屏幕左侧移动,就像这样:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg
.append("rect")
.attr("transform", "rotate(45)")
.attr("x", 250)
.attr("height", w / 10)
.attr("width", w / 10)
.attr("fill", "teal")
注意:如果我加入“y”属性,正方形就完全消失了。
这是什么原因?我做错了什么,但我看不出来?
w
和h
是画布的大小,rw
和rh
是矩形的大小,这应该可以实现你所要求的:.attr("transform", "translate(" + (w/2) + "," + (h/2) + ") rotate(45) translate(" + (-rw/2) + "," + (-rh/2) + ")"
。换句话说,首先将矩形的左上角移动到中心,然后旋转45度,然后沿着45度轴向后移动矩形宽度和高度的一半,使其居中。如果画布是300x300,矩形是100x100:"translate(150,150) rotate(45) translate(-50,-50)"
。 - meetamit