모달창 등에서 position을 fixed를 주고 화면을 꽉 채우기 위해서 vh를 100을 주는 경우가 있다.
안드로이드 또는 PC 화면에서는 문제가 없는데 아이폰에서 100vh를 사용하는 경우 사파리에서 아래에 웹사이트 바가
생겨서 깨지는 경우가 발생한다.
이때의 해결 방법으로
window.innerHeight * 0.01 이라는 값을 세팅해서 선언해준다고 한다.
그리고 document에 스타일 속성을 줘서 넣어준 다음 해결하는 방법이 일반적인 방법이다.
let vh = 0;
useEffect(() => {
vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);
}, []);
// 사용
height: calc(var(--vh, 1vh) * 100);
이 방법을 사용해봤지만 해당 문제로 해결되지 않았다.
또다른 방법으로 CSS를 사용해서 해결하는 방법이 있다고 한다.
min-height: 100vh;
min-height: -webkit-fill-available;
//
height: 100vh;
height: -webkit-fill-available;
height: fill-available;
이런 방법으로 해결되는 경우도 있지만
나의 경우에는 해결되지 않았다...
( 원인을 알아내는게 중요하지만 아직 원인을 알아내지 못했음,, )
일반적인 방법으로 해결하지 못한 나로써는 새로운 방법을 찾을 수 밖에 없었다.
찾아낸 방법으로는 Position을 사용하는 것이다.
모달 등은 최 상위에서 fixed를 사용하는데, 이때 top, left, right, bottom을 0으로 주면 전체 영역을 차지한다.
그렇게 되면 굳이 width / height를 주지 않고 전체 영역을 가지기 때문에 아이폰에서 영역 문제를 해결할 수 있다!
반응형
'React > 실험실' 카테고리의 다른 글
[React] Vite 환경 구성하기 (0) | 2024.02.28 |
---|---|
[React] Atomic Design Pattern + Headless UI Pattern (1) | 2024.01.07 |
[React] Children (0) | 2023.12.10 |
[React] Effect가 필요하지 않을 수 있다. (1) | 2023.11.20 |
[React] Swiper 잘 쓰기 - AutoPlay Pause Resume (1) | 2023.11.04 |