很简单,我的问题就是标题:
有没有办法在元素transform:skew();
应用到元素后获取它的高度?
例如,如果一个元素的高度是 100px 并且顶部偏移量是 500px 预变换,在对其应用倾斜后,高度实际上可能是 150px 并且顶部偏移量实际上可能是 450px,但标准的 height() 和偏移量jQuery 中的 () 方法仍然报告原始值。
有什么解决方法吗?
提前致谢。
很简单,我的问题就是标题:
有没有办法在元素transform:skew();
应用到元素后获取它的高度?
例如,如果一个元素的高度是 100px 并且顶部偏移量是 500px 预变换,在对其应用倾斜后,高度实际上可能是 150px 并且顶部偏移量实际上可能是 450px,但标准的 height() 和偏移量jQuery 中的 () 方法仍然报告原始值。
有什么解决方法吗?
提前致谢。
正如上面评论中提到的,高度和宽度的值没有改变,因为它们是基于没有样式的 DOM 元素。但是我注意到 offset() 方法从转换后的元素(Chrome 23 和 Firefox 16 OSX)返回正确的值。
为了给你一个解决方案——对于像倾斜和旋转这样的二维变换,我对变换做了基本的数学运算,下面的函数根据元素变换矩阵返回宽度和高度值。这适用于我尝试的所有 2d 转换、旋转/倾斜和两者的组合(同样,在 Chrome 23 和 Firefox 16 OSX 上)。
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}
}