【发布时间】:2017-10-30 13:52:24
【问题描述】:
试图获取 HTML 元素的 XY 坐标,因此我可以计算旋转元素的角相对于另一个元素的物理距离(以像素为单位)。
在 sn-p 中,我尝试计算内部 div 的左上角到外部 div 中心的距离。但我只有非旋转 div 的 Left 和 Top 值。我需要这些值来反映旋转 div 的 XY 点。相对于视口或另一个元素,有什么方法可以得到这一点?
我尝试过getBoundingClientRect(),但它给出了更大的矩形和错误的坐标,因为它实际上是一个包含完整旋转 div 的垂直框。
那么,请问有什么方法可以得到这些坐标吗?
document.getElementById('outRotated').innerHTML = clacDistancCornerCenter() + " Rotated distance of corner to center: "
function clacDistancCornerCenter() {
var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var centerX = outer.offsetWidth / 2;
var centerY = outer.offsetHeight / 2;
var innersCornerX = outer.offsetLeft;
var innersCornerY = outer.offsetTop;
//distance formula -> d = sqrt( pow( x2 - x1) + pow( y2 - y1) )
var distance = Math.sqrt(Math.pow(centerX - innersCornerX, 2) + Math.pow(centerY - innersCornerY, 2));
return distance;
}
function calcDistHorizontal() {
$('div').css('transform', 'rotate(0deg)');
document.getElementById('outHorizontal').innerHTML = clacDistancCornerCenter()+ " This Should be differnt when horizontal: ";
}
div {
top: 15%;
left: 20%;
width: 50%;
height: 50%;
border: 1px solid black;
position: absolute;
display: block;
transform: rotate(25deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="outRotated"> </p>
<p id="outHorizontal"> </p>
<button onclick="calcDistHorizontal()">Distance Horizontal</button>
<div id="outer">
<div id="mid">
<div id="inner">
</div>
</div>
</div>
【问题讨论】:
-
不确定是否有直接的方法。但是如果你知道非旋转坐标、旋转角度和旋转原点,你可以用一些数学方法手动计算。
标签: javascript jquery html css math