vh (viewport height)
와 vw(viewport width)
는 기존부터 존재하던 단위다.
둘 다 뷰포트를 기준으로 측정되는 단위이다.
이는 데스크탑 브라우저에서는 무리 없이 잘 동작한다. 그러나 문제는 모바일에서 발생했다.
예를 들어, 레이아웃의 높이 값을 100vh
로 지정하는 경우를 살펴보자.
높이를 100vh
로 지정을 했기에 나는 화면이 브라우저에 꽉차게 나오기를 기대했다. 그러나 ios, safari 기준으로 봤을 때 다음과 같이 화면이 나왔다.
의도치 않은 스크롤이 생긴것을 확인할 수 있다.
그 이유는 일부 모바일 브라우저에서는 사용자와의 인터랙션에 따라 브라우저의 UI가 변할 수 있기 때문이다.
예를 들어, safari에서의 100vh는 주소창이 없을 때를 기준으로 삼기 때문에 다음과 같은 스크롤이 생긴것이다.
위와 같은 문제를 해결하기 위해 새로운 단위들이 도입되었다.
도입되기 전까지 해결책과 문제점들..
https://dev.to/frehner/css-vh-dvh-lvh-svh-and-vw-units-27k4#the-new-css-units
동작하는 것을 보면 lvh와 vh가 비슷하게 동작하는 것처럼 보인다.
하지만 정의 자체는 다르므로 아래를 링크를 한번 읽어보면 좋을 것 같다.
CSS Values and Units Module Level 4
https://www.w3.org/TR/css-values-4/#viewport-relative-lengths
vh는 뷰포트와 관련이 있고, lvh는 뷰포트 + 브라우저 UI와 관련이 있다. 따라서 lvh를 사용하면 같은 기기에서도 브라우저마다 값이 다르게 적용될 수 있지만, vh를 사용하면 일괄되게 적용될 수 있다.
이러한 차이점들을 알고 잘 활용하면 좋을 듯 하다.