ale*_*lex 61
相反,你自己计算吧,你可以通过得到这个HTMLDOMElement的getBoundingClientRect().
这将返回一个正确的对象,height并width考虑转换矩阵.
non*_*uco 20
即使你旋转某些东西,它的尺寸也不会改变,所以你需要一个包装器.尝试使用另一个div元素包装div并计算包装器维度:
<style type="text/css">
#wrap {
border:1px solid green;
float:left;
}
#box {
-moz-transform:rotate(120deg);
border:1px solid red;
width:11px;
height:11px;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
alert($('#box').width());
alert($('#wrap').width());
});
</script>
</head>
<body>
<div id="wrap">
<div id="box"></div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
Redited:包装器解决方案无法正常工作,因为包装器不会自动调整为内部div的内容.遵循数学解决方案:
var rotationAngle;
var x = $('#box').width()*Math.cos(rotationAngle) + $('#box').height()*Math.sin(rotationAngle);
Run Code Online (Sandbox Code Playgroud)
我为此做了一个功能, domvertices.js
它计算任何,深,transformed,positioned DOM元素的4个顶点3d坐标- 实际上只是任何元素:参见DEMO.
a b
+--------------+
| |
| el |
| |
+--------------+
d c
var v = domvertices(el);
console.log(v);
{
a: {x: , y: , z: },
b: {x: , y: , z: },
c: {x: , y: , z: },
d: {x: , y: , z: }
}
Run Code Online (Sandbox Code Playgroud)
使用这些顶点,您可以计算以下任何内容:宽度,高度......例如,在您的情况下:
// norm(a,b)
var width = Math.sqrt(Math.pow(v.b.x - v.a.x, 2) + Math.pow(v.b.y - v.a.y, 2));
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅自述文件.
-
它作为npm模块发布(没有dep),所以只需安装它:
npm install domvertices
Run Code Online (Sandbox Code Playgroud)
干杯.
| 归档时间: |
|
| 查看次数: |
36532 次 |
| 最近记录: |