Javascript 在元素具有';歪斜';转换是否已应用于JS/jQuery?

Javascript 在元素具有';歪斜';转换是否已应用于JS/jQuery?,javascript,jquery,Javascript,Jquery,我的问题很简单,题目是: 在元素经过transform:skew()之后,是否有任何方法可以获得元素的高度应用于它 e、 g.如果一个元素的高度是100px,并且在变换前的顶部偏移量是500px,那么在对其应用了倾斜之后,高度实际上可能是150px,顶部偏移量实际上可能是450px,但是jQuery中的标准height()和offset()方法仍然报告原始值 有什么解决办法吗 提前感谢。如上所述,高度和宽度的值不变,因为它们基于DOM元素,没有样式设置。但是我注意到offset()方法从转换后的

我的问题很简单,题目是:

在元素经过
transform:skew()之后,是否有任何方法可以获得元素的高度应用于它

e、 g.如果一个元素的高度是100px,并且在变换前的顶部偏移量是500px,那么在对其应用了倾斜之后,高度实际上可能是150px,顶部偏移量实际上可能是450px,但是jQuery中的标准height()和offset()方法仍然报告原始值

有什么解决办法吗


提前感谢。

如上所述,高度和宽度的值不变,因为它们基于DOM元素,没有样式设置。但是我注意到offset()方法从转换后的元素(Chrome 23和Firefox 16 OSX)返回正确的值

为了给您提供一个解决方案-对于二维变换(如倾斜和旋转),我对变换进行了基本的数学运算,下面的函数基于元素变换矩阵返回宽度和高度值。这适用于我尝试的所有2d变换,旋转/倾斜以及两者的组合(同样,在Chrome 23和Firefox 16 OSX上)


如上所述,height和width的值没有变化,因为它们基于DOM元素,没有样式设置。但是我注意到offset()方法从转换后的元素(Chrome 23和Firefox 16 OSX)返回正确的值

为了给您提供一个解决方案-对于二维变换(如倾斜和旋转),我对变换进行了基本的数学运算,下面的函数基于元素变换矩阵返回宽度和高度值。这适用于我尝试的所有2d变换,旋转/倾斜以及两者的组合(同样,在Chrome 23和Firefox 16 OSX上)


高度()和偏移()保持不变,因为它们实际上保持不变。CSS转换大多只是样式化,对于DOM,元素的宽度、高度和位置仍然存在。甚至不确定是否可以访问转换后的显示的属性。是的,这是正确的,虽然我完全理解它,但我希望有一种相对简单的方法来检索转换后的属性。我想情况并非如此。无论如何,谢谢。我也希望这是可能的。事实上,我从来没有做过这方面的研究。每当我需要变换对象的尺寸时,我只需要做变换所需的数学运算,然后得到值。当然,这并不总是可行的。至少这让我明白了法布里科。非常感谢。如果你想把你的评论写进一个答案,我会把它标记为正确的。也许建议实际手动执行转换数学,以将转换作为一个潜在的解决方案。干杯。我想最好让它开一两天,你永远不知道。Webkit有很多“隐藏”的特性,这些特性即使不是完全跨浏览器的,也值得研究。即将到来的shadowdom可能会让这变得更容易,尽管我对此表示怀疑。不过,你的问题可能不仅仅是手工做数学题
=]
高度()和偏移量()保持不变,因为它们实际上保持不变。CSS转换大多只是样式化,对于DOM,元素的宽度、高度和位置仍然存在。甚至不确定是否可以访问转换后的显示的属性。是的,这是正确的,虽然我完全理解它,但我希望有一种相对简单的方法来检索转换后的属性。我想情况并非如此。无论如何,谢谢。我也希望这是可能的。事实上,我从来没有做过这方面的研究。每当我需要变换对象的尺寸时,我只需要做变换所需的数学运算,然后得到值。当然,这并不总是可行的。至少这让我明白了法布里科。非常感谢。如果你想把你的评论写进一个答案,我会把它标记为正确的。也许建议实际手动执行转换数学,以将转换作为一个潜在的解决方案。干杯。我想最好让它开一两天,你永远不知道。Webkit有很多“隐藏”的特性,这些特性即使不是完全跨浏览器的,也值得研究。即将到来的shadowdom可能会让这变得更容易,尽管我对此表示怀疑。不过,你的问题可能不仅仅是手工做数学题<代码>=]
function getBoundingBox(element){
    // Get the transformation matrix as a string
    var tm = element.css('transform');

    // Transform the string to an array
    var regexp = /-?\d+[\.\d]*/g;
    tm = tm.match(regexp);

    // Get the size of the object and calculate the bounding box
    var h = element.height();
    var w = element.width();
    var th = Math.abs(h * tm[0]) + Math.abs(w * tm[1]);
    var tw = Math.abs(h * tm[2]) + Math.abs(w * tm[3]);

    return {'height':th,'width':tw}
}