본문 바로가기
HTML + CSS + 자바스크립트

반응형 웹을 만드는 주요 기술 중 하나 '미디어 쿼리(media query)'

by Ellie.P 2023. 11. 30.
반응형

반응형 웹

웹브라우저의 크기, 접속하는 기기 등등 상태에 따라 웹페이지가 반응하여 변경하는 것

 

이러한 반응형 웹을 만드는 주요 기술 중 하나가

미디어 쿼리(media query)

이다.

 

뷰포트(viewport)

웹 페이지가 접속한 기기에서 보이는 실제 영역의 크기

 

vscode의 빈 파일에 ! 로 html의 기본 틀을 만들 수 있는데,

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

중간에 보이는 meta 태그viewport가 접속하는 기기마다 뷰포트를 최적화해준다.

content="width=device-width"

이 부분이 뷰포트의 넓이를 접속하는 기기 넓이로 최적화한다.

⭐️ 최소한 width, initial-scale 을 사용해줘야 다양한 기기에서 최적화된 화면을 보여줄 수 있다 ⭐️

미디어 쿼리 사용하기

@media only|not 미디어타입 and (조건문) {
	CSS 코드
}

✔️ only가 90% 이상 사용됨, not은 잘 사용하지 않음

✔️ 미디어타입 = 디바이스의 종류

(all, print, screen, speech)

✔️ and : 조건 연결

예시1

미디어쿼리가 적용가능한 모든 기기를 대상으로 화면이 존재하는 기기에서 그 기기의 최소 넓이가 1420px 이상일 경우, 🟦 파랑

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Media Query</title>
  <style>
    div{
      width:100px;
      height:100px;
      background-color:red;
    }
  
    @media only screen and (min-width: 1420px){
      div{
        background-color:blue;
      }
    }
  </style>
</head>
<body>
  <div></div>  
</body>
</html>

예시2

✔️ 조건 중첩 가능

✔️ orientation: portrait -> 화면의 방향이 세로일 때만 적용

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Media Query</title>
  <style>
    div{
      width:100px;
      height:100px;
      background-color:red;
    }
  
    @media only screen and (min-width: 370px) and (orientation: portrait){
      div{
        background-color:blue;
      }
    }
  </style>
</head>
<body>
  <div></div>  
</body>
</html>

예시3

✔️ max-width 중첩 가능

1440px보다 작으면 🟥 빨강, 1040px보다 작으면 🟦 파랑

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Media Query</title>
  <style>
    div{
      width:100px;
      height:100px;
      background-color:orange;
    }
  
    @media only screen and (max-width: 1440px){
      div{
        background-color:red;
      }
    }
    @media only screen and (max-width: 1040px){
      div{
        background-color:blue;
      }
    }
  </style>
</head>
<body>
  <div></div>  
</body>
</html>

반응형