영역의 높이를 뷰포트 높이를 잡을 때 쓰는 vh에 대해 알아보자🤔
말 그대로 Viewport의 높이를 말하며 높이 단위로 사용된다.
Viewport는 현재 보이는 화면 영역을 의미하는데 웹 브라우저 상으로는 UI, 메뉴 바 등을 제외한 브라우저 창의 영역을 말한다.
vh를 사용하면서 발생한 문제점과 해결 방법을 정리해봤다✍
PC에서는 뷰포트 높이에 맞게 잘보이던 영역이 모바일로 보니까 잘리는 현상이 생겼다.
(모바일기기별로 주소 표시줄 높이가 다르기때문에 그 높이만큼 잘림)
.box {
height:100vh;
height:-webkit-fill-available;
}
위 방법이 있다는데 ios에서만 적용이 되고 안드로이드에서는 적용되지않기때문에 권장하진 않는다고 한다.
이런 문제를 해결하기위해 대체할 수 있는 단위가 등장했다고 한다.
이미지 출저: https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
.box {
height:100dvh;
}
주소 표시줄이 스크롤을 통해 축소 또는 노출되던지 상관 없이 현재 보여지는 뷰포트 높이를 동적으로 가져온다👍
(위 이미지처럼 주소 표시줄의 유무에 따라 달라짐)
.box {
height:100svh;
}
-------------------
.box {
height:100lvh;
}
브라우저 하위 버전에서는 제공되지 않기때문에 호환성 확인이 꼭 필요하다.
[2024기준 Can I use]
개인적으로 확인해봤을 때, 파이어폭스나 예전 버전의 브라우저들에서 dvh가 적용되지 않는 것을 확인했다.
그럴 경우, 대안으로👇
.box {
height:100vh;
height:100dvh;
}
위처럼 vh를 써준 후 dvh를 써줘서, dvh가 적용되지 않을시 vh가 적용되도록 해주었다.
(나중에 다른 방안을 알게되거나 더 좋은게 생기면 수정✍)