다음 코드가하는 속임수. 장면이 원래 설계된 창의 크기 (1920 * 965)를 고려하면이 코드는 부모 컨테이너의 현재 크기를 가져오고 장면이 원래 1920 * 965에 상대적으로 포함 된 Div의 크기를 조정합니다. 참고 - 장면 내부 요소의 3D 스케일링을 수행하지는 않지만 전체 장면을 포함하는 div의 크기를 조절합니다. 내부의 내용은 자동으로 크기가 조절됩니다.
부모 컨테이너의 크기를 조절할 때 스크린 중심에서 멀리 떨어진 곳으로 장면을 이동시키는 방법에 대해 Div가 올바른 위치에 놓이게하려면 음수 좌표를 사용하여 코드가 장면 위치를 왼쪽 및 위쪽으로 이동시키는 방법에 유의하십시오.
function resizeWin() {
wW = ourDiv.parentNode.offsetWidth;
wH = ourDiv.parentNode.offsetHeight;
var scaler=Math.min(wW/1920, wH/965); // original screen was designed in full HD Chrome
var w=wW/scaler;
var h=wH/scaler;
var left=(w-scaler*w)/2;
var top=(h-scaler*h)/2;
var style = "width:"+w+"px; height:"+h+"px;"+allStyles("-webkit-transform: translate(-"+left+"px,-"+top+"px) scale("+scaler+");");
ourDiv.setAttribute("style", style);
redrawScene();
}
당신은 getBoundingClientRect()에 대해 옳았습니다. 고맙습니다. 자동 크기 - scale3d와 관련하여 문제가 있습니다. "전체적인 것"을 스케일 할 수는 없습니다. 3 개의 좌표 모두를 한번에 스케일링하면 장면이 같은 크기로 남을 것입니다. 현재 각도에 따라 비율을 조정하면 장면 크기가 조정되지만 자동 크기 조정이 매우 복잡해집니다. –