본문 바로가기

HTML & CSS

[HTML] iOS에서 키보드 활성화 시 Viewport 문제 정리

반응형

1) iOS에서 키보드 활성화 시 Viewport 계산 문제

문제 원인
  1. 키보드로 인해 Viewport가 변경됨:

    • iOS의 사파리에서 키보드가 표시되면 시각적 뷰포트 는 줄어들지만, 레이아웃 뷰포트는 같은 크기로 유지합니다.
    • Android는 해당 키패드만큼 자동으로 줄여줍니다.
  2. getBoundingClientRect의 상대 위치:

  3. iOS의 경우: 해당 키패드 만큼 body 태그가 올라간다고 생각하면 된다.

    • 키보드를 열기전 : 화면의 높이
    • 키보드를 열었을 때 : 화면의 높이 + 키보드의 높이

(출처: https://jooonho.dev/web/2023-01-09-webview-issue/)

해결 방법

  • 스크롤 위치 조정:
    • window.scrollY 값을 추가로 계산해 문서의 전체 좌표 기준으로 보정.
const rect = element.getBoundingClientRect();
const adjustedTop = rect.top + window.scrollY;

2) 결론

반응형