Javascript 如何获得CSS旋转元素的实际(非原始)高度

Javascript 如何获得CSS旋转元素的实际(非原始)高度,javascript,jquery,css,css-transforms,Javascript,Jquery,Css,Css Transforms,我需要获得几个不同元素的实际高度(为了精确的自定义工具提示定位),其中一些元素(不是全部)是旋转的$(elem).outerHeight()返回原始高度,而不是实际显示的高度 下面是一个非常简单的例子: 我在这个答案中看到了一个可能的解决方案:,但我仍然希望有一个更简单的方法。如果你只使用45度的旋转,并且宽度和高度总是相等的,你可以使用相对简单的数学公式来计算实际旋转的高度: 这说明斜边长度的平方等于其他两边长度的平方和 在这种情况下,最长的边是从一个角到另一个角的对角线。这将大致转化为jQu

我需要获得几个不同元素的实际高度(为了精确的自定义工具提示定位),其中一些元素(不是全部)是旋转的$(elem).outerHeight()返回原始高度,而不是实际显示的高度

下面是一个非常简单的例子:


我在这个答案中看到了一个可能的解决方案:,但我仍然希望有一个更简单的方法。

如果你只使用45度的旋转,并且宽度和高度总是相等的,你可以使用相对简单的数学公式来计算实际旋转的高度:

这说明斜边长度的平方等于其他两边长度的平方和

在这种情况下,最长的边是从一个角到另一个角的对角线。这将大致转化为jQuery,如下所示:

Math.sqrt(Math.pow($('#diamond').height(), 2) + Math.pow($('#diamond').width(), 2))

查看更新后的图表。

我把高中时的几何知识和我强大的图形技能掸掉,把这张图表放在一起。如果javascript中有变量
width
height
rotation
,则可以用以下方式表示高度:

var rotated_height = width * Math.sin(rotation) + height * Math.cos(rotation);

感谢您对Starx的编辑。在帖子最重要的部分,这是一个相当关键的错误!谢谢,我理解这一点,但您没有注意到我正在处理几个元素,其中只有一些元素是旋转的。我正在寻找一种通用方法“获取元素的高度”,而不预先知道它已旋转。但是如果我找不到它,我将不得不使用这个方法,是的:)再次感谢@NPC:如果旋转为0,此方法仍然适用于无特殊情况,因为
sin(0)==0
cos(0)==1
。是的,但这需要知道旋转。由于没有更好的解决方案,我接受你的,但实际上它需要处理一个变换矩阵。我创建了一个提琴来演示这一点,如果将来有人(包括我在内:)需要的话:(但看到这个怪物,我认为最好改变算法,在旋转的项目上添加一些类,以避免噩梦)。同上-谢谢,但你没有注意到我正在处理几个元素,其中只有一些是旋转的。但是,谢谢你的回答。