viewport 메타 태그
모바일용 웹페이지를 만들때 일반적으로 viewport
메타태그를 사용해서 페이지가 모바일에서도 잘 보이도록 합니다.
위처럼 viewport
메타태그를 사용하지 않으면 원래의 사이즈로 나와서 모바일에서 보기에 좋지 않은 페이지에 다음과 같이 viewport
를 지정하면 아래 화면과 같이 모바일 사이즈에 맞춰서 나온다.
Safari 개발자 문서를 보면 viewport
에서 사용할 수 있는 프로퍼티에 대한 설명이 나와 있다. 이 프로퍼티는 모두 iOS 1.0부터 지원한다.
- width: 뷰포트의 넓이이고 픽셀값이다. 기본값은 980이고 200부터 10,000까지 지정할 수 있다. 기기의 넓이를 의미하는 상수인
device-width
나 높이를 의미하는device-height
를 사용할 수도 있다. - height: 뷰포트의 높이이고 픽셀값이다. 기본값은
width
프로퍼티에 기반해서 화면 비율에 따라 계산한다. 223부터 10,000 픽셀까지 지정할 수 있으면device-width
나device-height
상수를 사용할 수 있다. - initial-scale: 뷰포트의 기본 비율이다. 기본값은 보이는 영역에 화면을 맞춰주고
minimum-scale
과maximum-scale
프로퍼티로 범위가 결정된다. - minimum-scale: 뷰포트의 최소 비율을 지정한다. 기본값은 0.25이고 0부터 10.0까지 지정할 수 있다.
- maximum-scale: 뷰포트의 최대 비율을 지정한다. 기본값은 5.0이고 0부터 10.0까지 지정할 수 있다.
- user-scalable: 사용자가 뷰포트를 축소/확대 할 수 있는지를 지정한다.
yes
로 지정하면 축소/확대할 수 있고no
로 지정하면 축소/확대할 수 없다. 기본값은yes
다. 이 값은no
로 지정하면 인풋필드에 글자를 입력할 때 웹페이지가 스크롤되는 것을 막는다.
아이폰 5에서 웹앱으로 전체화면 사용하기
모바일 사파리에서 사용할 때는 상관없지만 iOS에는 웹페이지를 앱처럼 홈화면에 추가하는 기능이 있고 rainygirl님이 올려주신 iOS Web-App 용 몇 가지 스킬에 나와있는 apple-mobile-web-app-capable
메타태그를 사용하면 모바일 사파리의 주소창같은 것 없이 풀 스크린으로 띄울 수 있다. 이 부분은 웹을 페이지가 아닌 웹앱형태로 구성했을 때 유용한 기능인데 iPhone 5에서 위의 viewport
메타태그를 사용해서 홈화면에서 앱처럼 실행하면 다음과 같이 나온다.
(빈공간을 알 수 있도록 테두리를 추가했다.)
아이폰은 세로가 더 길기 때문에 전체화면으로 나타나지 않고 위아래에 공백이 나타난다. 아이폰4는 640x960인데 반해서 아이폰 5는 640x1136인데 여기서 상단의 상태바가 40픽셀이므로 실제 화면에 사용하는 높이는 640x1096이 된다. viewport
메타태그의 height는 width
에 기반해서 적용되는데 initial-scale
를 1로 지정한 경우에 width
가 320픽셀이 된다. 그래서 비율에 따라 height
가 480픽셀이 되고 실제 기기의 픽셀로 보면 960픽셀이 되므로 176픽셀(1136-960)만큼 비게 되는 것이다. width가 320이니까 height는 568픽셀이 되어야 전체화면이 다 채워지는데 이 문제를 해결하는 방법은 아주 쉽다.(Burin Asavesna가 올려준 코드를 참고했다.)
위와 같이 메타태그를 2개 지정하고 미디어쿼리를 사용해서 기기의 높이가 568픽셀인 경우에는 viewport
에서 width를 지정하지 않으면 다음과 같이 전체화면으로 웹앱이 나타나게 된다.
Comments