반응형웹에 대한 미디어쿼리의 사용

처음에 미디어 쿼리를 디바이스별로 정리를 해볼까 하다가 새로운 디바이스가 나올때마다 해상도 파악하고 기록하고…
삽질할 것을 생각하니 엄두가 나지 않아서 범용적으로 사용할 수 있는 방법으로 정리를 해야할 것 같아 포스팅을 합니다.

그래도 먼저 디바이스별 해상도에 대해서 궁금한 사람이 있을 수 있으니 신상 디바이스까지 업데이트를 잘 해주고 있는 사이트를 2개 공유하고 넘어 갑니다.

기본 설정

반응형웹을 적용하기 위해서는 먼저 meta viewport를 설정해 줘야 합니다.
meta viewportwidthdevice-width로 지정하고 initial-scale1로 설정을 해 줘야 합니다.

  • width=device-width : 화면의 넓이를 디바이스(단말기)의 넓이로 지정
  • initial-scale=1 : 기본 사이즈를 1로 지정하겠다고 선언
<meta name="viewport" content="width=device-width, initial-scale=1">

이렇게 설정하면 다양한 크기의 화면에서도 보기에 편한 텍스트 크기와 레이아웃을 유지해 줍니다.

미디어쿼리 지정

기본설정을 했으면 이번에 다양한 크기(해상도)의 디바이스에 따라 CSS가 다르게 적용될 수 있게 미디어쿼리(Media Query)를 지정해야 합니다.
Breakpoints는 부트스트랩(Bootstrap)을 참조하였으며 그에 해당하는 미디어쿼리는 아래와 같이 가로 해상도에 따라 5가지로 구분할 수 있습니다.

반응형 웹개발에 있어서 고려해야 할 점이 있는데 모바일 퍼스트 로 개발을 할 것이냐 하는 것입니다.
모바일 퍼스트 개발은 화면 구현 시 먼저 모바일 화면을 기준으로 디자인(CSS)을 하고 차츰 태블릿 화면, 데스트탑 화면으로 디자인을 구현하는 것을 말합니다.
반응형 웹개발 시 근래의 추세는 모바일 퍼스트로 개발하는 추세이긴 합니다만 상황에 따라서 데스크탑 퍼스트(사실 데스크탑 퍼스트라는 말을 잘 쓰지는 않습니다.)로 개발하는 경우도 빈번합니다.

모바일 퍼스트 개발

반응형 웹개발에 있어서 모바일 퍼스트 개발은 근래에 선호되는 방법입니다.
모바일 퍼스트로 개발할 경우는 미디어쿼리도 max-width가 아니라 min-width방식으로 지정하여 사용하고
CSS의 Override 특성을 활용하여 미디어쿼리를 작성하면 됩니다.

  1. 가장 작은 디바이스 : 가로 해상도가 576px 보다 작은 모든 디바이스를 기본으로 CSS를 작성합니다.
  2. 모바일 디바이스 : 가로 해상도가 576px 보다 큰 경우의 모바일 디바이스에 대한 CSS를 작성합니다.
  3. 태블릿 디바이스 : 가로 해상도가 768px 보다 큰 경우의 테블릿 디바이스에 대한 CSS를 작성합니다.
  4. 데스크탑 : 가로 해상도가 992px 보다 큰 경우의 데스크탑에 대한 CSS를 작성합니다.
  5. 큰화면의 데스크탑 : 가로 해상도가 1200px 보다 큰 경우의 데스크탑에 대한 CSS를 작성 합니다.
// 기본 CSS를 작성합니다. (세로모드 모바일 디바이스)
// 기본으로 작성되는 CSS는 576px보다 작은 화면에서 작동 됩니다.

// 가로모드 모바일 디바이스 (가로 해상도가 576px 보다 큰 화면에 적용)
@media (min-width: 576px) { ... }

// 태블릿 디바이스 (가로 해상도가 768px 보다 큰 화면에 적용)
@media (min-width: 768px) { ... }

// 테스크탑 (가로 해상도가 992px 보다 큰 화면에 적용)
@media (min-width: 992px) { ... }

// 큰화면 데스크탑 (가로 해상도가 1200px 보다 큰 화면에 적용)
@media (min-width: 1200px) { ... }

만약@media (min-width: 768px) { ... }까지만 작성하고
@media (min-width: 992px) { ... }@media (min-width: 1200px) { ... }에 대한 미디어쿼리를 작성하지 않았다면
@media (min-width: 768px) { ... }에 정의된 CSS가 테스크탑큰화면의 데스크탑의 크기에도 동일하게 적용이 됩니다.

데스크탑 퍼스트 개발

모바일퍼스트에 반대되는 개발 방법으로 예전에 많이 사용되었던 방식입니다.
데스크탑 화면이 중요하거나 또는 기존에 개발되어 있던 데스크탑 화면의 CSS에 모바일 화면에 대한 추가 개발을 해야 할 경우에 많이 사용합니다.
이럴경우 모바일 퍼스트로 개발하는 것과 반대로 미디어쿼리도 min-width가 아니라 max-width방식으로 지정하여 사용 합니다.

  • 가장 작은 디바이스 : 가로 해상도가 576px 보다 작은 모든 디바이스를 기본으로 CSS를 작성합니다.
  • 모바일 디바이스 : 가로 해상도가 576px 보다 큰 경우의 모바일 디바이스에 대한 CSS를 작성합니다.
  • 태블릿 디바이스 : 가로 해상도가 768px 보다 큰 경우의 테블릿 디바이스에 대한 CSS를 작성합니다.
  • 데스크탑 : 가로 해상도가 992px 보다 큰 경우의 데스크탑에 대한 CSS를 작성합니다.
  • 큰화면의 데스크탑 : 가로 해상도가 1200px 보다 큰 경우의 데스크탑에 대한 CSS를 작성 합니다.
// 세로모드 모바일 디바이스 (가로 해상도가 576px 보다 작은 화면에 적용)
@media (max-width: 575px) { ... }

// 가로모드 모바일 디바이스 (가로 해상도가 768px 보다 작은 화면에 적용)
@media (max-width: 767px) { ... }

// 태블릿 디바이스 (가로 해상도가 992px 보다 작은 화면에 적용)
@media (max-width: 991px) { ... }

// 테스크탑 (가로 해상도가 1200px 보다 작은 화면에 적용)
@media (max-width: 1199px) { ... }

// 기본 CSS를 작성합니다. 
// 기본으로 작성되는 CSS는 1199px보다 큰 화면에서 작동 됩니다.

만약 @media (max-width: 767px) { ... }까지만 작성하고
@media (max-width: 575px) { ... }에 대한 미디어쿼리를 작성하지 않았다면..
@media (max-width: 767px) { ... }에 정의된 CSS가 세로모드 모바일 디바이스가로모드 모바일 디바이스의 크기에도 동일하게 적용이 됩니다.

해상도 범위 지정 CSS 개발

나머지는 CSS의 Override기능을 사용하지 않고 지정된 해상도를 설정하여 사용하는 방법입니다.
미디어쿼리를 가장 작은 해상도와 가장 큰 해상도의 범위를 명확히 지정하여 사용 합니다.
이럴경우 미디어쿼리는 min-widthmax-width를 동시에 지정하여 사용 합니다.

  • 가장 작은 디바이스 : 가로 해상도가 576px 보다 작은 모든 디바이스를 기본으로 CSS를 작성합니다.
  • 모바일 디바이스 : 가로 해상도가 576px 보다 크고 767px보다 작은 모바일 디바이스에 대한 CSS를 작성합니다.
  • 태블릿 디바이스 : 가로 해상도가 768px 보다 크고 991px보다 작은 테블릿 디바이스에 대한 CSS를 작성합니다.
  • 데스크탑 : 가로 해상도가 992px 보다 큰고 1199px보다 작은 데스크탑에 대한 CSS를 작성합니다.
  • 큰화면의 데스크탑 : 가로 해상도가 1200px 보다 큰 경우의 데스크탑에 대한 CSS를 작성 합니다.
// 세로모드 모바일 디바이스 (가로 해상도가 576px 보다 작은 화면에 적용)
@media (max-width: 575px) { ... }

// 가로모드 모바일 디바이스 (가로 해상도가 576px보다 크고 768px 보다 작은 화면에 적용)
@media (min-width: 576px) and (max-width: 767px) { ... }

// 태블릿 디바이스 (가로 해상도가 768px보다 크고 991px 보다 작은 화면에 적용)
@media (min-width: 768px) and (max-width: 991px) { ... }

// 데스크탑 (가로 해상도가 992px보다 크고 1199px 보다 작은 화면에 적용)
@media (min-width: 992px) and (max-width: 1199px) { ... }

// 큰화면 데스크탑 (가로 해상도가 1200px 보다 큰 화면에 적용)
@media (min-width: 1200px) { ... }

Similar Posts

  • Atom 에디터의 유용한 패키지 정리

    github에서 만든 무료 Atom 에디터에서 기본적으로 설치해야 할 Packages(플러그인)을 정리해 봤습니다. === Packages used Package Website 설명 O sync-settings https://atom.io/packages/sync-settings Atom에디터의 설정을 저장해서 어디에서든 동일한 환경으로 에디팅을 할 수 있게 해줌 O atom-beautify https://atom.io/packages/atom-beautify HTML, CSS, JavaScript, PHP의 코드 정렬 O color-picker https://atom.io/packages/color-picker 에디터에서 바로 컬러값을 보고 선택할 수 있음 O Remote-FTP https://atom.io/packages/Remote-FTP 서브라임텍스트의 SFTP와 […]

  • 영문 WordPress를 한글 WordPress로 바꾸기

    시놀로지에서 도커로 WordPress를 설치하면 불행하게도 멀티랭귀지로 설치되는 것이 아니라 영문Wordpress가 설치가 됩니다. 아무래도 Docker 이미지를 가볍게 유지하기 위해서 Languages 폴더를 제거하고 만들어서 그런것 같습니다. 지금 설명드리는 영문 WordPress를 한글 WordPress로 변경하는 것은 시놀로지 Docker에 만 해당되는 것은 아니고 모든 영문Wordpress를 한글로 변경할때 해당 되는 내용이기도 합니다. 시놀로지에서 Docker로 WordPress를 설치하는 방법은 이전에 포스팅한 내용을 참고하세요. […]

  • Grunt 소개와 설치방법

    Node.js의 탄생으로 인해 javascript진영이 비약적인 발전을 이루고 있으며 그러한 발전에 견인차 역활을 한 Grunt라는 것이 있습니다. 이러한 프레임워크를 javascript Task기반 빌드 Tools이라고 하는데 과연 이것이 무엇인지, 그리고 어떻게 설치하고 사용하는지에 대해 포스팅을 하려고 합니다. Gruntjs란 무엇인가. Grunt 또는 Gruntjs라고 하며 인터넷을 검색하면 Task기반 빌드 툴이라고 나옵니다. 풀어서 설명을 하면… Node.js를 기반으로 하고있는 무수한 패키지들 중에 […]

  • 스마트폰으로 시놀로지 VPN 서버에 접속하기

    이전에 시놀로지 VPN 서버와 VPN PLUS은 무엇이 다른것인가 라는 제목으로 시놀로지로 VPN 서버를 만드는 것을 포스팅 했었습니다. 이번엔 이 VPN서버에 스마트폰으로 어떻게 접근하여 사용하는지 포스팅하려고 합니다. 제 폰이 안드로이드이기 떄문에 안드로이드폰을 기준으로 설명을 드릴 예정이며 아이폰이나 기타 다른폰 일지라도 핵심 설정은 거의 대동소이하므로 참고하실 수 있을 것입니다. 스마트폰으로 VPN PPTP 추가하기 PPTP가 무었인지는 시놀로지 VPN […]

  • 스마트폰으로 시놀로지 OpenVPN 서버 접속하기

    스마트폰으로 시놀로지 VPN 서버에 접속하는 방법은 이전에 포스팅을 헀으니 참고하세요. 스마트폰으로 시놀로지 VPN 서버에 접속하기 이번에는 OpenVPN으로 접속하는 방법입니다. 이전 포스팅에 시놀로지에 OpenVPN 서버를 설정하는 방법도 포스팅을 했으니 참고하세요. 시놀로지 VPN 서버와 VPN PLUS은 무엇이 다른것인가 스마트폰으로 시놀로지 OpenVPN 추가하기 OpenVPN은 오픈소스라 무료로 사용할 수 있고 현재 많은 VPN 업체에서도 사용하고있는프로토콜입니다. 비교적 안전하고 속도도 괜찮은 […]

  • 폰트어썸 (Font Awesome) 아이콘 폰트 사용하기

    아이콘 폰트인 폰트어썸 (Font Awesome)을 사용하는 방법입니다. 아이콘폰트가 무엇인지 궁금하면 이전에 포스팅한 아이콘 폰트(Icon font) 자유자제로 사용하기를 먼저 읽어 보시는 것을 추천합니다. 폰트어썸 (Font Awesome) 폰트어썸 (Font Awesome) 홈페이지 바로가기 폰트어썸은 가장 유명한 대표적인 아이콘폰트 제공 사이트 입니다. 다양한 형태의 아이콘이 빠르게 업데이트되고 있으며 깃헙에서 51000여개의 star를 받고 있을 정도로 사랑을 받고있습니다. 현재 유료서비스를 시도하고 […]

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다