본문 바로가기
프로그래밍/HTML, CSS

반응형 웹 - 뷰포트(viewport) 사용법

by pentode 2018. 4. 9.

반응형 웹 (responsive web)이란 하나의 웹사이트로 데스크탑 PC, 스마트폰, 태블릿 PC 등 접속하는 디스플레이의 종류에 따라 화면의 크기가 자동으로 변하도록 만든 웹 페이지를 말합니다.

 

미디어 쿼리는 CSS3 부터 지원이 되는 CSS기술로 미디어 타입, 화면 크기 등을 기준으로 다른 스타일 시트를 적용할 수 있도록 해줍니다. 이를 이용해서 화면 크기가 변할때 스타일을 바뀌도록 해서 반응형 웹을 구현할 수 있습니다.

 

모바일 웹을 작성하게 되면 뷰포트(viewport)라는 것을 고려하게 됩니다. 뷰포트는 웹페이지가 사용자에게 보여지는 영역을 말합니다. 데스크탑 PC에서 브라우저의 크기를 줄이면 웹페이지의 내용이 다보여지지 않고 스크롤 해서 봐야 되는 경우가 있습니다. 이때도 브라우저에 보여지는 부분이 뷰포트입니다. 데스크탑 PC는 브라우저의 크기를 바꿔서 뷰포트의 크기를 바꿀 수 있는 것입니다.

 

반면에 휴대폰이나 태블릿의 경우는 브라우저의 크기를 변경할 수 가 없습니다.(요즘은 멀티뷰를 지원하는 기기도 있지만, 일반적이지는 않습니다.) 하지만, 워낙 다양한 기기들이 존재하기 때문에, 뷰포트의 크기도 다양합니다.

 

휴대폰이나 태블릿이 나오기 이전의 웹페이지는 데스크탑 PC용으로만 만들었기 때문에 고정된 크기를 가지는 것이 대부분이 었습니다. 이렇게 고정된 크기를 가진 웹페이지를 화면이 작은 휴대폰에서 보면 한 화면에 다보이지 않게 됩니다.

 

대부분의 휴대폰등 모바일 기기의 웹브라우저에서 웹페이지가 그려지는 렌더링 영역은 사용자에게 보여지는 영역인 뷰포트 보다 큽니다. 1024 x 768 사이즈에 고정되어 있는 웹페이지를 320 x 568 사이즈를 가지는 아이폰에서 보면 스크롤해야만 모두를 볼 수가 있습니다.

 

모바일 기기의 렌더링 형태

 

그래서 모바일 웹브라우저가 취하는 기본정책은 모두를 보여주기 위해 화면을 줄여서 보여주는 것입니다. 이러한 정책은 내용 전체를 볼 수는 있으나 글자가 너무 작아져서 보기 어려워지는 단점이 있습니다.

 

화면축소

 

HTML5에서 소개된 뷰포트 <meta> 태그를 사용하면 모바일 기기에서 실제 렌더링되는 영역과 뷰포트의 크기를 조절할 수 있습니다. 또한 줌 레벨도 조정할 수 있습니다. 아래는 가장 일반적으로 사용되는 설정 입니다.

 

<meta name="viewport" content="width=device-width, initial-scale=1.0">

 

- width=device-width : 페이지의 너비를 기기의 스크린 너비로 설정합니다. 즉, 렌더링 영역을 기기의 뷰포트의 크기와 같게 만들어 줍니다.

- initial-scale=1.0 : 처음 페이지 로딩시 확대/축소가 되지 않은 원래 크기를 사용하도록 합니다. 0~10 사이의 값을 가집니다.

 

이것외에도 다음과 같은 값을 지정할 수 있습니다.

 

- minimum-scale : 줄일 수 있는 최소 크기를 지정합니다. 0~10 사이의 값을 가집니다.

- maximum-scale : 늘릴 수 있는 최대 크기를 지정합니다. 0~10 사이의 값을 가집니다.

- user-scalable : yes 또는 no 값을 가지며 사용자가 화면을 확대/축소 할 수 있는지는 지정합니다.

 

위의 줌 레벨은 1이 원래크기이고, 0.5 라면 50% 축소를 뜻합니다.

 

그러므로 위의 설정은 페이지 너비를 휴대기기 화면너비에 맞추고, 처음 로딩시 줌을 하지 않는 것입니다. 적용한 결과는 다음과 같습니다.

 

뷰포트 지정

 

이미지는 화면크기보다 크므로 다 보이지 않지만, 텍스트 영역을 보면 화면 크기를 넘지 않고 아래로 wrap 되는 것을 볼 수 있습니다. 실제 렌더링 영역과 뷰포트의 크기가 같아진 것입니다.

 

이미지에 대해서는 모바일에서 사용하기 위해서는 좀 더 처리가 필요합니다. 화면이 클 때는 자신의 크기를 유지하고 화면이 이미지의 크기보다 작아지면 화면크기에 맞춰서 크기가 줄어들도록 CSS를 지정할 수 있습니다.

 

img {
    width: 100%;
    height: auto;
}

 

이렇게 지정한 결과 입니다.

 

이미지 크기 처리

 

데스크탑 PC와 모바일 기기에서 적절히 보이는 반응형 웹을 만들기 위해서는 뷰포트 메타 태그를 사용하는것이 시작이 되겠습니다.

 

※참조 : https://www.w3schools.com/css/css_rwd_viewport.asp

 

반응형