..

Search

58) 미디어 쿼리

미디어 쿼리


미디어 쿼리(media query)

CSS2에서는 @media 규칙을 통해 서로 다른 매체 유형(media type)을 위한 맞춤식 스타일 시트(style sheet)를 지원합니다.

예를 들면, HTML 문서가 스크린에 표현될 때와 프린트할 때 서로 다른 스타일을 적용할 수 있습니다.

 

CSS3에서는 @media 규칙을 더욱 발전시켜 매체 유형(media type)과 하나 이상의 표현식(expression)으로 구성된 미디어 쿼리(media query)를 사용할 수 있습니다.

미디어 쿼리(media query)는 width, height, color 속성과 같은 미디어 관련 속성을 이용한 표현식을 통해 스타일이 적용되는 범위를 조절할 수 있습니다.

미디어 쿼리를 사용하면 콘텐츠(content)를 별도로 변경하지 않아도 웹 페이지에 접속하고 있는 기기에 알맞은 형태로 스타일이 조정됩니다.


CSS3 미디어 쿼리(media query) 지원 버전

CSS3 미디어 쿼리(media query)를 지원하는 주요 웹 브라우저의 버전은 다음과 같습니다.

또한, 브라우저별로 벤더 프리픽스(vendor prefix)를 이용해 이 기능을 최초로 지원한 버전도 같이 표기했습니다.

규칙 ie chrome firefox safari opera

@media

9.0

21.0

3.5

4.0

9.0


미디어 쿼리 문법

다음은 같은 파일 내의 <style>태그 안에 미디어 쿼리가 위치할 경우의 문법입니다.

문법

@media only|not 매체유형 and (표현식) { CSS스타일코드; }

 

또 다른 방법으로는 외부 CSS 파일에 미디어 쿼리를 따로 저장할 수도 있습니다.

문법

<link rel="stylesheet" media="매체유형 and|only|not (표현식)" href="CSS파일URL"/>

 

만약 웹 페이지에 접속하고 있는 기기의 매체 유형과 명시된 매체 유형이 일치하고, 모든 표현식이 참(true)이면, 미디어 쿼리는 참(true)을 반환합니다.

이렇게 미디어 쿼리의 반환값이 참이면, 해당 블록 안에 명시된 CSS 스타일 코드가 실행됩니다.

여기에 and, only, not 등과 같은 키워드를 사용하여 더욱 복잡한 조건을 명시할 수도 있습니다.


CSS3 매체 유형(media type)

CSS3의 매체 유형은 이전 CSS2에서 정의된 것을 그대로 사용하고 있습니다.

다음은 자주 사용되는 매체 유형(media type)입니다.

매체 유형 설명
all 모든 매체에 사용함.
print 프린터 기기에 사용함.
screen 컴퓨터나 태블릿, 스마트폰 등 스크린(screen)이 있는 매체에 사용함.
speech 웹 페이지를 읽어주는 스크린 리더(screenreader)에 사용함.

CSS3 미디어 쿼리(media query) 속성

속성 설명
width 화면의 너비
height 화면의 높이
device-width 매체 화면의 너비
device-height 매체 화면의 높이
devie-aspect-ratio 매체 화면의 비율
orientation 매체 화면의 방향
color 매체의 색상 비트 수
color-index 매체에서 표현 가능한 색상의 개수
monochrome 흑백 매체에서의 픽셀당 비트 수
resolution 매체의 해상도

 

위의 속성 중에서 orientation 속성을 제외한 모든 속성의 앞에는 min 또는 max 접두사를 사용할 수 있습니다.

위의 속성들을 적절히 활용하면 반응형 웹 사이트를 손쉽게 제작할 수 있습니다.


CSS3 미디어 쿼리(media query) 예제

다음 예제는 뷰포트의 너비가 480픽셀이거나 그 이하일 경우에는 배경색을 darkorange로 표현해 줍니다.
하지만 뷰포트의 너비가 그 초과일 경우에는 배경색을 lightblue로 바꿔서 표현해 줍니다.

예제

<style>

    body { background-color: darkorange; }

    @media screen and (min-width: 480px) {

        bodybackground-color: lightblue; }

    }

</style>

코딩연습 ▶

 

다음 예제를 웹 브라우저에서 실행하면 배경색을 검정색으로, 텍스트의 색상은 흰색으로 표현합니다.

하지만 웹 페이지를 프린트하게 되면 배경색을 흰색으로, 텍스트의 색상을 검정색으로 바꿔서 프린트합니다.

예제

<style>

    @media screen {

        bodybackground-color: blackcolor: white; }

    }

    @media print {

        bodybackground-color: whitecolor: black; }

    }

</style>

코딩연습 ▶

 

이처럼 미디어 쿼리를 이용하면 매체에 따라 다른 동작을 하도록 손쉽게 설정할 수 있습니다.


연습문제