강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của superfly90612
superfly90612

câu hỏi đã được viết

Bản sao tương tác trang web của Apple!

Tính toán kích thước canvas trộn

canvasScrollRatio를 맞춰주는 기준

Viết

·

254

2

let heightRatio = window.innerHeight/objs.canvas.height;
let widthRatio = window.innerWidth/objs.canvas.width;
let canvasRatio;
console.log('heightRatio:',heightRatio,'widthRatio:',widthRatio);
if (heightRatio<=widthRatio) {
//캔버스보다 브라우저가 납작할때
canvasRatio = widthRatio
} else {
//캔버스보다 브라우저가 길쭉할때
canvasRatio = heightRatio;
}
1.캔버스 대비 화면의 폭/높이 비율을 구하는 건 알겠는데
왜 한쪽비율의 값이 더 클 때 그 값을 canvasRatio로
쓰는지 잘 모르겠습니다.
스크롤하다가 캔버스의 윗 부분이 화면에 들어맞으면 움직이기 위해서라면
heigthRatio만 조절해서 캔버스의 높이를 화면의 높이와
맞춰주면 되지 않나 헷갈려서요~
objs.canvas.style.transform=`scale(${canvasRatio})`;
objs.context.drawImage(objs.videoImages[0],0,0);
//recalculated하는 이유?
//캔버스 사이즈에 맞춰 가정한 innerWidth,innerHeight
const recalculatedWidth = window.innerWidth / canvasRatio;
const recalculatedHeight= window.innerHeight / canvasRatio;
2.recalcaulated하는 이유
recalculatedWidth/Height 값을 구하면 둘 중 하나는
원래 캔버스의 너비/높이 중 하나의 값을 가지게 된다고 생각되는데요.
캔버스를 화면의 크기에 맞춰준 상태인데 다시 계산하는 이유가 있을까요?
화면의 크기에 맞춰진 캔버스의 양 끝에 그대로 사각형을 그려주면
되는 게 아닌가 싶어서요.
질문이 너무 긴데 이해가 쉽지 않아 여쭤봅니다.
항상 강의 잘 듣고 있습니다.
svg웹 디자인HTML/CSS인터랙티브-웹javascript클론코딩

Câu trả lời 2

3

studiomeal님의 프로필 이미지
studiomeal
Người chia sẻ kiến thức

화면과 캔버스의 비율이 같지 않기 때문에
그 상태에서 높이를 꽉 채우고 가로로 가운데 정렬을 하기 위함이라고 생각하시면 됩니다.
화면 비율이 어떻든 캔버스 자체가 1920x1080으로 가로보다 세로가 작기 때문에
풀 스크린 효과가 나도록 세로를 화면 높이에 꽉 채우는거죠~
세로를 채우면 화면의 양 끝은 캔버스의 양끝과는 다른 위치가 되고(영상에 그림으로 설명하는 부분)
우리는 캔버스의 양 끝이 아닌 화면의 양 끝에 맞추어 그려야하기 때문에 X 위치도 따로 계산해주는 것이고요^^

이런 부분은 디자인 형태에 따라 계산의 기준이 달라지는거라
이 예제의 경우 이렇게 계산한 것이고,
으하핳님께서 만드실 프로젝트에서는 굳이 필요치 않은 계산일 수도 있습니다^^
디자인 형태에 따라 또 다른 계산식이 필요할지도 모르고요!

0

superfly90612님의 프로필 이미지
superfly90612
Người đặt câu hỏi

감사합니당

Hình ảnh hồ sơ của superfly90612
superfly90612

câu hỏi đã được viết

Đặt câu hỏi