【问题标题】:Obtain the Actual Left,Top position of a rotated div获取旋转 div 的实际 Left,Top 位置
【发布时间】:2012-03-20 22:12:32
【问题描述】:

如果我有一个旋转 45 度的 div,它的属性是:左:0,上:0,宽度:100 像素,高度:100 像素。 能否获取div左上角的实际x,y位置?

当 div 旋转时,左上角大约位于 -10px,-10px(猜测)。但我正在尝试计算 Web 应用程序的实际左上角 x,y 位置。

也许你知道一个可以确定左上角 x,y 位置的数学公式?或者也许一个 javascript 属性会给我它? 比如 div.style.actualLeft;?

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:

如果它是静态 45 度并且旋转的原点在中心,那么您只需计算一次,即:

sqrt((width/2)^2+(height/2)^2)
sqrt(50^2+50^2) // Pythagorean theorem

这是70,71067811865475

因此,与原点相比,x 方面为负 70,7106...而 y 方面为 0。

如果您要动态旋转它,那么您必须始终知道它,那么瞧!看!

计算一次距离,sqrt(50^2+50^2),然后将其乘以添加到立方体的旋转 + 135 度(因为它位于左上角)。 (90 = 直线上升,+ 45 = 135)

所以要得到与我刚才所说的相同的答案:

var dist=Math.sqrt(50^2+50^2);
var degtorad=Math.PI/180;

var x = Math.cos(degtorad * (135+rotation)) * dist;
var y = Math.sin(degtorad * (135+rotation)) * dist;

现在 x & y 将相对于原点。如果您需要更多帮助,请更具体地提出您的问题,以便我们更好地回答,帮助我们为您提供帮助。

快速计算:

rotation=45
135+45 = 180

Math.cos(degtorad * 180)) = -1
Math.sin(degtorad * 180)) = 0;

x = -1 * dist = -70,71067811865475
y = 0 * dist = 0

瞧,就像我在开始计算静态时所说的那样,我只是没有为此使用任何 cos / sin ......但这也有效。 (-75 也可以)

【讨论】:

  • 斯文森感谢您的回答。但是您的代码中的变量“旋转”是什么?值 135 不是已经将 45(我的旋转)添加到 90 吗?那么它应该是(90+旋转)而不是(135+旋转)吗?这也会像-75度这样的角度起作用吗?
  • rotation 是您旋转立方体的角度 _______ 135 是从中心到左上角的方向。 0 = 右 _______ 45 = 右上 _______ 90 = 上 _______ 135 = 左上 _______ 你说“如果我将它旋转 45 度”,如果你这样做,那么旋转 = 45
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2011-09-08
相关资源
最近更新 更多