현재 요소가 회전되기 전에 시작점을 찾는 방법에 대한 문제를 다루고 있습니다.회전 된 HTML 요소의 원점 계산
내 프로젝트에는 동일한 컨테이너에있을 수없는 두 개의 div가있어서 문제가 발생합니다.
나는 이미 회전 된 요소의 초기 점을 계산하여 그 위에 다른 요소를 올바르게 배치 한 다음 동일한 회전 각도를 적용 할 수 있습니다. 작업 할 올바른 좌표를 가지도록하려면 회전이 발생할 때마다 작은 사각형의 스탬프가있는 div가 있습니다. 초기 점의 파란색 사각형과 요소가 회전중인 중심점의 빨간색 사각형입니다. Javascript에서 수식을 가지고 있다고 생각했지만 뭔가 이상한 것 같습니다. 0도 또는 180도에서 더 멀리 떨어져있을수록 멀리 떨어져있는 다른 요소는 예상되는 위치에서 벗어납니다. 아래는 제가 현재 가지고있는 공식입니다. HTML5 Canvas: Calculating a x,y point when rotated
을하지만 끔찍한 시간이 제대로 작동하려면 내 프로젝트를 얻는 데 :
var angle = (integer passed in to the function. Example: 45) var rotatedX = blueBox.getBoundingClientRect().left; var rotatedY = blueBox.getBoundingClientRect().top; var centerX = redBox.getBoundingClientRect().left; var centerY = redBox.getBoundingClientRect().top; var dx = rotatedX - centerX; var dy = rotatedY - centerY; var toRadians = (Math.PI/180); var dx2 = dx * Math.cos(toRadians * angle) - dy * Math.sin(toRadians * angle); var dy2 = dx * Math.sin(toRadians * angle) + dy * Math.cos(toRadians * angle); var initialX = dx2 + centerX; var initialY = dy2 + centerY; elementToRotate.style.top = initialX + "px"; elementToRotate.style.left = initialY + "px"; //This just applies the CSS transform:rotate(45deg) to the element elementToRotate.rotateDegrees(angle);
원래는 여기에 공식 떨어져 일하고 있었다. 이것에 대한 도움은 크게 감사하겠습니다. 추가 정보를 제공해야하는 경우 알려주십시오.
http://jsfiddle.net/aSr7J/1/ 이것은 JS Fiddle 문제입니다. 검은 색 윤곽선이있는 상자 안의 아쿠아 박스를 계산하는 것이 목표입니다. 계산은 0도와 180도에서 작동하며 45도에서 매우 정확하지 않습니다.
이것이 [jsfiddle] (http://jsfiddle.net/)에서 재현 될 수 있다면 도움이 될 것입니다. – Matt
제안 해 주셔서 감사합니다. 방금 문제에 대한 js 바이올린을 게시했습니다. – Ant
@Ant 그냥 미래의 참조를 위해 나는이 같은 일반적인 질문에 webkit 접두어가 붙은 속성으로 피들을 게시하는 것이 약간 불쾌하다고 생각합니다. 'transform'은 IE10 +와 FF에서 16으로 다시 고정되지 않습니다. – Jeremy