코딩 스쿨 CSS

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

CSS Media Queries

CSS Media Queries: 반응형 웹 디자인 구현

CSS Media Queries는 다양한 화면 크기디스플레이 특성에 따라 서로 다른 CSS 스타일을 적용할 수 있는 기능입니다. 이를 사용하면 하나의 웹 페이지에서 다양한 디바이스에 맞춰 콘텐츠와 레이아웃을 적절히 조정할 수 있어, 반응형 웹 디자인을 구현하는 데 핵심적인 역할을 합니다.

1. Media Queries의 기본 개념

미디어 쿼리는 웹 페이지의 뷰포트 크기디스플레이 해상도 등의 조건에 따라 CSS 스타일을 적용하는 방식입니다. 이를 통해 화면 크기디바이스 특성에 맞춰 다른 레이아웃을 제공할 수 있습니다.

기본 구문

@media only screen and (조건) {
  /* 해당 조건이 충족될 때 적용할 스타일 */
}
  • @media: 미디어 쿼리를 시작하는 구문.
  • 조건: 미디어 쿼리가 적용될 조건(예: 화면 크기).
  • 스타일: 조건이 충족될 때 적용할 CSS 스타일.

예시: 화면 크기에 따른 스타일 적용

@media only screen and (max-width: 600px) {
  body {
    background-color: lightblue;
  }
}

이 코드는 화면 너비가 600px 이하일 때 배경색밝은 파란색으로 변경합니다.

2. Media Queries에서 사용할 수 있는 조건

미디어 쿼리는 다양한 조건을 통해 특정 상황에서만 스타일을 적용할 수 있습니다.

주요 조건

  • width/height: 화면의 너비나 높이.
  • min-width/max-width: 화면의 최소 또는 최대 너비.
  • min-height/max-height: 화면의 최소 또는 최대 높이.
  • orientation: 화면의 방향 (가로 또는 세로).
  • resolution: 화면의 해상도 (예: DPI).

3. 반응형 디자인에 자주 사용하는 Media Queries

반응형 웹 디자인에서는 화면 너비에 따라 스타일을 변경하는 것이 일반적입니다. 주로 모바일, 태블릿, 데스크탑 기기에 맞춰 미디어 쿼리를 설정합니다.

예시: 기본 반응형 설정

/* 모바일 (최대 너비 600px) */
@media only screen and (max-width: 600px) {
  body {
    font-size: 14px;
  }
}

/* 태블릿 (최소 너비 601px, 최대 너비 1024px) */
@media only screen and (min-width: 601px) and (max-width: 1024px) {
  body {
    font-size: 16px;
  }
}

/* 데스크탑 (최소 너비 1025px) */
@media only screen and (min-width: 1025px) {
  body {
    font-size: 18px;
  }
}
  • 모바일: 폰트 크기14px로 설정.
  • 태블릿: 폰트 크기16px로 설정.
  • 데스크탑: 폰트 크기18px로 설정.

4. 미디어 유형과 미디어 기능

미디어 쿼리는 다양한 미디어 유형미디어 기능을 조합하여 사용할 수 있습니다.

미디어 유형

  • screen: 스크린 기반 장치(모니터, 태블릿, 스마트폰 등).
  • print: 인쇄 또는 인쇄 미리보기.
  • all: 모든 장치에 적용(기본값).

미디어 기능

  • min-width, max-width: 최소/최대 너비 조건.
  • min-height, max-height: 최소/최대 높이 조건.
  • orientation: 화면 방향(세로/가로).
  • aspect-ratio: 화면의 가로 세로 비율.
  • resolution: 화면 해상도(DPI).

예시: 인쇄 미디어에 맞춘 스타일

@media print {
  body {
    font-size: 12pt;
    color: black;
    background-color: white;
  }
}

이 코드는 프린터로 출력할 때 페이지의 글자 크기12pt로 설정하고, 배경색을 흰색으로, 글자색을 검정색으로 설정합니다.

5. orientation을 사용한 가로/세로 레이아웃 변경

미디어 쿼리를 사용하면 기기의 방향(세로/가로)에 따라 다른 스타일을 적용할 수 있습니다.

예시: orientation 사용

/* 세로 모드 */
@media only screen and (orientation: portrait) {
  .container {
    flex-direction: column;
  }
}

/* 가로 모드 */
@media only screen and (orientation: landscape) {
  .container {
    flex-direction: row;
  }
}
  • 세로 모드(portrait): **.container*의 레이아웃을 **열(column)**로 설정.
  • 가로 모드(landscape): **.container*의 레이아웃을 **행(row)**으로 설정.

6. 고해상도 디스플레이를 위한 미디어 쿼리

  • *고해상도 디스플레이(Retina, 4K 등)**에서 이미지가 선명하게 보이도록 해상도를 설정할 수 있습니다.

예시: 고해상도 디스플레이 설정

@media only screen and (min-resolution: 192dpi) {
  .logo {
    background-image: url('logo-highres.png');
  }
}

이 코드는 화면의 해상도가 192dpi 이상일 때, 더 높은 해상도의 로고 이미지를 사용합니다.

7. 미디어 쿼리에서 논리 연산자 사용

미디어 쿼리에서 논리 연산자를 사용해 여러 조건을 결합할 수 있습니다.

주요 논리 연산자

  • and: 두 조건이 모두 참일 때 적용.
  • or: 두 조건 중 하나라도 참이면 적용.
  • not: 특정 조건을 제외.

예시: 논리 연산자 사용

@media only screen and (min-width: 600px) and (max-width: 1024px) {
  /* 너비가 600px 이상 1024px 이하일 때 적용 */
  body {
    font-size: 16px;
  }
}

@media not all and (max-width: 600px) {
  /* 너비가 600px 이하가 아닌 경우 적용 */
  body {
    font-size: 18px;
  }
}

이 코드는 화면 너비가 600px 이상 1024px 이하일 때와 600px 이하가 아닌 경우 각각 다른 스타일을 적용합니다.

8. 실전 예시: 반응형 네비게이션 메뉴

미디어 쿼리를 사용해 반응형 네비게이션 메뉴를 만들 수 있습니다. 작은 화면에서는 햄버거 메뉴로 전환되고, 큰 화면에서는 수평 메뉴가 나타납니다.

HTML

<nav class="navbar">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

CSS

/* 기본 네비게이션 스타일 (데스크탑) */
.navbar ul {
  display: flex;
  list-style: none;
  justify-content: space-around;
  background-color: #333;
}

.navbar ul li a {
  color: white;
  text-decoration: none;
  padding: 15px;
}

/* 모바일 (600px 이하)에서는 수직 네비게이션으로 전환 */
@media only screen and (max-width: 600px) {
  .navbar ul {
    flex-direction: column;
  }

  .navbar ul li a {
    padding: 10px;
    text-align: center;
  }
}

이 코드는 화면이 작을 때 네비게이션 메뉴를 수직으로 정렬하고, 큰 화면에서는 수평으로 정렬합니다.


CSS Media Queries화면 크기, 해상도, 디스플레이 특성에 따라 다양한 스타일을 적용할 수 있게 해주는 중요한 도구입니다. 이를 통해 반응형 웹 디자인을 쉽게 구현할 수 있으며, 사용자에게 최적화된 경험을 제공할 수 있습니다. 다양한 미디어 유형미디어 기능을 결합하여 웹 페이지를 보다 유연하고 동적인 레이아웃으로 설계할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com