본문 바로가기
Frontend/CSS

CSS의 반응형 웹을 위한 미디어쿼리(Media Query) 사용법

by 코딩쥐 2024. 7. 10.

미디어쿼리는 디바이스의 특정 조건에 따라 CSS스타일을 다르게 지정하는 방법이다. 스타일을 지정하는 방식은 처음에 웹브라우저를 위한 디자인을 만들고 이후에 디자인의 배치를 변경하는 방식인 top-down 방식과, 처음에 작은 디바이스를 위한 디자인을 만들고 이후에 웹브라우저를 위해 디자인의 배치를 변경하는 방식인 bottom-up방식이 있다.

  • @media 미디어유형 and (조건) { CSS스타일 블록 }

미디어유형

미디어유형의 경우 all, screen, print 이 있으나 생략해서 사용할 수 있다. 생략하게 되는 경우 기본값 all이 적용된다. 

미디어쿼리 조건

자주 사용되는 조건들이다.

조건 설명
orientation 뷰포트의 세로 혹은 가로 방향
max-height | min-height | height 뷰포트의 최대 높이 | 최소 높이 | 높이
max-width | min-width | width 뷰포트의 최대 너비 | 최소 너비 | 너비

 

Top-down 방식

처음에 웹 브라우저 기준으로 스타일을 적용하고, 이후 각 디바이스들의 최대 너비에 맞춰서 배경색을 변경했다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* top-down 방식 */
        div{
            width: 100vw;
            height: 100vh;
            background-color: lightcoral;
        }
        @media(max-width: 1600px){
            div{
                background-color: lightblue;
            }
        }
        @media(max-width: 1024px){
            div{
                background-color: lightgreen;
            }
        }
        @media(max-width: 760px){
            div{
                background-color: lightsalmon;
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

 

Bottom-up 방식

처음에 모바일 기준으로 스타일을 적용하고, 이후 각 디바이스의 최소 너비에 맞춰서 크기가 다른 배경이미지를 삽입했다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* top-down 방식 */
        div {
            width: 100vw;
            height: 100vh;
            background-image: url(./selft-study-image/dessert-small.jpg);
            background-repeat: no-repeat;
            background-size: cover;
        }

        @media(min-width: 480px) {
            div {
                background-image: url(./selft-study-image/dessert-small.jpg);
                background-repeat: no-repeat;
                background-size: cover;
            }
        }

        @media(min-width: 760px) {
            div {
                background-image: url(./selft-study-image/dessert-medium.jpg);
                background-repeat: no-repeat;
                background-size: cover;
            }
        }

        @media(min-width: 1024px) {
            div {
                background-image: url(./selft-study-image/dessert.jpg);
                background-repeat: no-repeat;
                background-size: cover;
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

오른쪽아래 background-image: url이 변경되는걸 볼 수 있다.