개발자
vue로 작업된 iOS 웹앱 환경에서 1. form에 focus하였을 때 form 요소가 정상적인 위치에서 보이지 않아 사용자가 재차 스크롤하여야 하는 문제점이 발생 -> 하여, focus 이벤트 리스너를 추가하여 해당요소의 위치에 맞게 스크롤 되도록 이벤트 추가 문제점 : 현재 상단 헤더 요소 (position: fixed) 그 하단에 탭메뉴 (position: sticky) 두개의 요소가 항상 페이지 상단에 고정되어 있음 근데 가상 키패드가 올라오면서 스크롤 이동이 발생하는 경우 상단 요소가 사라짐 가상 키패드가 올라오면서 발생하는 문제인 것 같은데....정확한 이유를 모르겠어서 문의 드립니다.
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
1월 6일
iOS에서는 viewport 높이(height)를 동적으로 변경함에 따라 이러한 현상이 발생할 수 있습니다. 가상 키보드가 올라오면서 화면의 뷰포트(viewport)가 리사이징 되고, 이로 인해 고정된 요소들(position: fixed 나 position: sticky)이 예상한대로 작동하지 않을 수 있습니다. 문제를 해결하는 한 가지 방법은 고정된 요소들을 absolute로 변경하고 필요한 경우에만 포지션 값을 변경하는 것입니다. 이렇게 하면 스크롤은 제대로 작동하며, 동시에 고정된 헤더와 정확한 위치 유지도 가능하게 됩니다. ```css .header { position: absolute; top: 0; } /* When needed */ .header.is-fixed { position: fixed; } ``` 또 다른 방법은 스크롤을 사용자의 만족 할 수 있는 위치로 즉각적으로 이동하는 자바스크립트를 사용하는 것입니다. 하지만 이 경우에도 iOS 뷰포트의 리사이징 문제 때문에 완전한 해결책이 될 수 없습니다. Vue에서 ScrollIntoView를 사용하여 폼 요소로 자동 스크롤 할 수 있습니다. ```javascript this.$refs.input.scrollIntoView(false); ``` 위 코드는 폼 요소(여기서는 'input' ref)를 화면의 하단으로 맞추려고 시도합니다. scrollIntoView 메서드는 이동을 애니메이션화 하지 않으므로 바로 이동하게 됩니다. 이러한 해결책들은 완벽하지 않을 수 있습니다. iOS 뷰포트 동작은 복잡하며, 고정 요소에 대한 처리 방식은 브라우저마다 다르기 때문입니다. 따라서 특정 상황에서 가장 잘 작동하는 해결책을 찾아내는 것이 중요합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!