CSS Viewport 간단 정리

2023년 7월 20일 수정

CSS를 다루다보면 뷰포트(viewport)라는 용어를 볼 수 있는데 이 용어의 의미는 무엇이고 어떻게 쓰는 걸까? 간단하게 살펴보자.

CSS Viewport

Viewport는 웹 브라우저에서 화면이 표시되는 영역의 크기를 의미한다. 즉 Viewport를 가득 채웠다는 말은 브라우저에서 페이지가 표시되는 화면 전체에 해당하는 크기라는 말이다.

간혹 CSS에서 특정 크기 단위로 vw, vh 가 사용되는데 이게 바로 Viewport를 기준으로 한 상대 크기 단위이다.

현대적인 웹 페이지는 웹 브라우저의 모든 영역을 사용하려 하기 때문에 상황에 따라서 상당히 편리한 기준이라 생각된다.

vw, vh

vw 는 뷰포트 기준으로 넓이(width)의 상대 비율을 의미하는 단위이고, 넓이의 1%를 의미하는 1vw 와 동일한 의미이기도 하다.

vh 는 뷰포트 기준으로 높이(height)의 상대 비율을 의미하는 단위이고, 뷰포트 높이의 1%에 해당하는 1vh 와 동일한 의미이기도 하다.

두 단위 모두 백분율로 쓴다. 즉 50vw 는 화면 절반(50%)의 넓이라는 의미다. 그리고 100vw 는 화면 전체(100%) 넓이이다. vh 의 경우도 동일하다.

vmax, vmin

vmaxvwvh 중 크기가 큰 것의 비율을 표현하는 단위다. 즉 데스크탑이라면 보통 vmaxvw 를 기준으로 동작한다. 물론 디스플레이 모니터를 세로로 세웠다면 vh 이겠지만 말이다.

반대로 vminvwvh 중 작은 것의 비율을 표현하는 단위다.

이 단위들도 역시 백분율 기준이다.

정확한 Viewport의 크기

앞서 언급한 단위들의 크기는 웹 브라우저에서 주소줄이나 툴바와 같은 컨트롤러가 일시적으로 화면을 가리는 기능이 있는 경우 가려진 부분까지도 포함하는 크기라는 점에 주의하자.

PC용 브라우저는 이런 경우가 잘 없지만 모바일 브라우저는 화면을 스크롤하면 특정 UI 요소가 사라져서 페이지를 더 넓게 보여주기도 한다는 점을 생각해보자.

Small Viewport, Large Viewport

위에서 vw, vh 두 단위는 컨트롤러가 임시로 화면을 가리는 부분까지 포함하는 크기에서의 비율을 의미한다고 했는데 이 부분은 좀 모호함을 준다. 그래서 이 모호함을 없애기 위해 Small Viewport와 Large Viewport 단위가 제공된다.

Small Viewport는 svw, svh, svmax, svmins 머릿글자가 붙은 단위로 컨트롤러가 화면을 가릴 경우 이 컨트롤러가 가리는 부분을 제외한 크기에서의 비율을 의미하는 단위로 사용되는 개념이다.

Large Viewport는 lvw, lvh, lvmax, lvminl 머릿글자가 붙은 단위로 화면을 가리는 컨트롤러가 사라졌을 때의 크기에서의 비율을 의미하는 단위로 사용되는 개념이다.

Dynamic Viewport

Small과 Large Viewport를 굳이 가리고 싶지 않다면 Dynamic 즉 동적인 단위를 사용하는 방법이 있다.

dvw, dvh, dvmax, dvmin 처럼 머릿글자로 d 가 붙은 단위는 동적으로 동작한다. 즉 화면을 가리는 컨트롤러가 있을 경우 이 크기를 제외한 크기에서 비율로 지정할 수 있다. 만약 해당 컨트롤러가 화면에서 사라지면 전체 화면 크기에서 비율로 동작한다.

그 외에

Viewport 단위에는 이 외에도 vi, vb 단위가 있다. 개인적으론 필요가 없는 것 같아서 정리하지는 않았지만 필요하다면 찾아보자.