CSS

iphoneX 웹뷰 대응하기 (safe-area-inset)

Developer Mobssie 2019. 1. 16. 17:32

사용법


1. 메타태그 뷰포트에 viewport-fit=cover 를 추가

모서리, 센서 하우징 및 홈 버튼을 피하기 위해 동적으로 조정이 가능해 iPhone X의 화면 공간을 최대한 활용할 수 있다.

<meta name='viewport' content='initial-scale=1, viewport-fit=cover'>


2. padding-top: env(safe-area-inset-bottom) 으로 기본으로 사용
env(safe-area-inset-bottom); // IOS 11.0 이상 (신)
constant(safe-area-inset-bottom); // IOS 11.0 버전 (구)

<!-- ios 11.2 업데이트에서 constant가 제거됨 env를 사용.-->


3. 기본적인 padding값이 스타일로 들어가있을 경우에는 calc를 사용하여 정리한다.

.button {
     padding: 12px 16px; // 기본 값을 지정해 준후
     padding: 12px 16px calc(constant(safe-area-inset-bottom) + 12px) 16px; 
     // 변경이 필요한 부분은 하단의 패딩값이기 때문에 constant로 구버전 값을 넣고
     padding: 12px 16px calc(env(safe-area-inset-bottom) + 12px) 16px;
} // env로 신규버전 값을 넣어준다.



[TIP]

레이아웃의 각 블록마다 좌우 여백에 safe-area-inset-left, safe-area-inset-right 값을 더해서 보정한다. 기존 좌우 여백값 env(safe-area-inset-left) 값을 더해서 아이폰X의 가로모드일때만 수치가 보정된다.

env () 함수는 iOS 11에 constant ()라는 이름으로 제공되었다. Safari Technology Preview 41 및 iOS 11.2 beta부터 constant ()가 제거되고 env ()로 대체되었다.  CSS 대체 메커니즘을 사용하여 필요에 따라 두 버전을 모두 지원할 수 있지만 앞으로 env ()를 선호되어야 한다.


padding-top: 0; padding-top: env(safe-area-inset-top); padding-top: constant(safe-area-inset-top);


참고
https://webkit.org/blog/7929/designing-websites-for-iphone-x/

https://dohoons.com/blog/1468/

'CSS' 카테고리의 다른 글

SASS 시작하기 (node-sass)  (0) 2021.02.27