티스토리 뷰
React 모바일 환경 키보드 화면가림 대응하기
window.visualViewport 를 활용해서, 모바일에서 키보드가 생기기 전,후의 높이 차이를 체크해
스크롤링 해주는 방식으로 키보드 화면 가림현상에 대응했다.
@ 예시코드
useEffect(() => {
if (window) {
let prevVisualViewport = window.visualViewport?.height;
const handleVisualViewportResize = () => {
const currentVisualViewport = Number(window.visualViewport?.height);
if (
prevVisualViewport &&
prevVisualViewport - 30 > currentVisualViewport
) {
const scrollHeight = Number(
window.document.scrollingElement?.scrollHeight
);
const scrollTop =
scrollHeight - Number(window.visualViewport?.height);
window.scrollTo(0, scrollTop); // 입력창이 키보드에 가려지지 않도록 조절
}
prevVisualViewport = Number(window.visualViewport?.height);
};
if (window.visualViewport) {
window.visualViewport.onresize = handleVisualViewportResize;
}
}
}, []);
@적용전

@적용후

'개발일기 > REACT' 카테고리의 다른 글
[ Apollo] apolloClient nextjs 환경에서 'network-only' 가 작동하지 않는 현상 해결 (0) | 2022.11.10 |
---|---|
[Jest] mocking을 위한 jest.spyOn, mockImplementation 에 대해 알아보기 (0) | 2022.09.10 |
[Nextjs] nextjs middleware활용해서 redirect구현하기 (0) | 2022.09.08 |
[Nextjs] userAgent 에서, 브라우저 환경 구분하는 방법 (0) | 2022.09.02 |
[React] DarkMode 새로고침시 화면 깜빡임문제 해결 - useLayoutEffect (0) | 2022.03.31 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- React
- 산안기 합격률
- 전자기학
- TypeScript
- 전기기사필기
- fakerjs
- 전기기사 필기
- 전기기사실기단답
- 전기기사
- cbt
- nextjs
- 모두CBT
- zep
- 실기CBT
- 전기기사실기CBT
- gathertown
- JavaScript
- 게더타운맵
- dummydata
- 전기공사기사
- TS
- KEC반영
- 개더타운
- 전력공학
- 게더타운
- 전기산업기사
- 전기기기
- 산업안전기사
- shortid
- 산업안전기사 실기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함