본문 바로가기

웹프로그래밍/CSS

iphone X 웹뷰 safe-area-inset 관련

반응형

프로젝트에서 상단 하단 position:fixed된 레이아웃 상태에서

아이폰X 웹뷰 대응 방법이다.

  1. 메타태그 뷰포트쪽에 viewport-fit=cover 를 추가
  2. padding-top: env(safe-area-inset-bottom);

2번의 속성값을 응용하는 건데 기본적으로


env(safe-area-inset-bottom); // IOS 11.0 이상 (신)
constant(safe-area-inset-bottom); // IOS 11.0 버전 (구)
ios 11.2 업데이트에서 constant가 제거됨 env를 사용.

해당 값이 필요한 부분에 위값을 응용하여 집어 넣었다. (저는 커스텀한곳에 위 env,constant 둘다 삽입 했습니다;)

safe-area-inset의 기본값이 있어 값을 수정하고 싶으면

padding-bottom: calc(env(safe-area-inset-bottom) - 5px);

css의 calc를 사용하여 원하는 곳에 속성을 추가한후 값을 조절해서 사용하면 되겠다.

예제 )

  1. 하단에 고정 버튼이 있다고 할때.

수정 전

수정 후

2. 위의 수정 후사진처럼 변경을 하려면

// 기본 CSS
.button-fixed-bottom {
position: fixed;
right: 0;
bottom: 0;
left: 0;
background: #fff;
}
// 변경값을 줄 클래스
.button-fixed-bottom {
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로 신규버전 값을 넣어준다.

3. constant / env 값을 둘다 추가해야 IOS 구버전, 신버전 대응이 가능하다

참고 : 링크

반응형