Post

미디어 쿼리

미디어 쿼리

미디어 쿼리 (Media Queries)

미디어 쿼리는 CSS의 기능으로, 디바이스의 특성(예: 화면 크기, 해상도, 방향 등)에 따라 스타일을 조건부로 적용할 수 있게 해줍니다. 주로 반응형 웹 디자인(Responsive Web Design, RWD)에 사용되며, 사용자의 기기에 맞춰 레이아웃이나 스타일을 동적으로 변경합니다.

기본 구조

1
2
3
@media (조건) {
  /* 조건이 충족될 때 적용되는 스타일 */
}

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* 화면 너비가 600px 이하일 때 적용 */
@media (max-width: 600px) {
  body {
    font-size: 14px;
  }
  .container {
    width: 100%;
  }
}

/* 화면 너비가 601px 이상일 때 적용 */
@media (min-width: 601px) {
  .container {
    width: 80%;
    margin: 0 auto;
  }
}
  • max-width: 최대 너비 조건.
  • min-width: 최소 너비 조건.
  • 기타 조건: orientation (가로/세로), resolution (해상도) 등도 사용 가능.

특징

  • 유연성: 다양한 디바이스와 화면 크기에 대응 가능.
  • ** breakpoint**: 특정 화면 크기에서 스타일이 변경되는 지점을 설정해 사용.
  • 주로 모바일, 태블릿, 데스크톱 등에 맞춘 반응형 디자인에 활용.

적응형 코딩 (Adaptive Coding)

적응형 코딩은 미디어 쿼리와는 조금 다른 접근 방식으로, 특정 디바이스나 화면 크기에 맞춘 고정된 레이아웃을 여러 개 준비해 제공하는 방식입니다. 반응형 디자인이 유동적으로 변한다면, 적응형은 미리 정의된 몇 가지 레이아웃 중 하나를 선택해 보여줍니다.

구현 방식

  • 서버 측 또는 클라이언트 측에서 디바이스 정보를 감지.
  • 그에 맞는 스타일시트나 HTML을 제공.
  • 예: 모바일용(320px), 태블릿용(768px), 데스크톱용(1200px) 레이아웃을 별도로 설계.

예시

1
2
3
4
5
6
7
8
9
/* 모바일용 스타일 */
.mobile-layout {
  width: 320px;
}

/* 데스크톱용 스타일 */
.desktop-layout {
  width: 1200px;
}
1
2
3
4
5
6
// 클라이언트 측 감지 예시
if (window.innerWidth <= 320) {
  document.body.classList.add('mobile-layout');
} else if (window.innerWidth >= 1200) {
  document.body.classList.add('desktop-layout');
}

특징

  • 고정된 레이아웃: 특정 해상도에 최적화된 디자인 제공.
  • 성능 최적화: 필요한 리소스만 로드해 속도 개선 가능.
  • 반응형보다 구현이 간단할 수 있지만, 유연성은 떨어짐.

미디어 쿼리 vs 적응형 코딩

| 구분 | 미디어 쿼리 (반응형) | 적응형 코딩 | |——————|————————————|——————————| | 접근 방식 | 유동적, 화면 크기에 따라 점진적 변화 | 고정된 레이아웃 선택 | | 유연성 | 높음 | 낮음 | | 복잡도 | 상대적으로 복잡 | 단순할 수 있음 | | 사용 사례 | 다양한 디바이스 대응 | 특정 디바이스 타겟팅 |


결론

  • 미디어 쿼리는 현대 웹에서 더 널리 사용되며, 반응형 디자인이 표준으로 자리 잡았습니다. CSS Grid나 Flexbox와 함께 사용하면 더욱 강력합니다.
  • 적응형 코딩은 과거에 많이 사용되었고, 특정 상황(예: 성능 최적화가 중요한 경우)에서 여전히 유용할 수 있습니다.

추가로 궁금한 점이 있으면 말씀해주세요! 예제 코드를 더 보거나 특정 상황에 맞춘 설명도 가능합니다.

This post is licensed under CC BY 4.0 by the author.