학습
CSS 고급 반응형 디자인 기법
CSS 고급 반응형 디자인 기법 — 고급
고급 반응형 디자인 기법
1. 도입 (왜 배워야 하는가)
반응형 웹 디자인은 다양한 기기에서 일관된 사용자 경험을 제공하기 위해 필수적입니다. 오늘날 사용자는 스마트폰, 태블릿, 데스크탑 등 여러 기기를 통해 웹사이트에 접근합니다. 이러한 환경에서 반응형 디자인을 구현하지 않으면 특정 기기에서 웹사이트가 비정상적으로 보이거나 사용하기 불편해질 수 있습니다. 예를 들어, 모바일 기기에서 큰 이미지를 로드하는 경우 페이지 로딩 속도가 느려지거나 사용자가 스크롤을 해야 하는 불편을 겪을 수 있습니다. 이는 사용자 이탈로 이어져 비즈니스에 큰 영향을 미칠 수 있습니다.
2. 핵심 개념 설명
2.1. 미디어 쿼리 (Media Queries)
미디어 쿼리는 CSS에서 장치의 특성에 따라 스타일을 적용할 수 있게 해주는 기능입니다. 마치 옷을 입을 때 계절이나 날씨에 맞게 옷을 고르는 것과 같습니다.
2.2. 플렉스박스 (Flexbox)
플렉스박스는 요소들을 유연하게 배치할 수 있는 CSS 레이아웃 모듈입니다. 마치 공간을 효율적으로 활용하기 위해 가구를 배치하는 것과 같습니다.
| 용어 | 설명 |
|---|---|
| 미디어 쿼리 | 화면 크기나 해상도에 따라 CSS를 적용하는 기법 |
| 플렉스박스 | 요소들을 유연하게 배치할 수 있는 CSS 레이아웃 기술 |
3. 기본 코드 예제
미디어 쿼리 사용 예제
/ 기본 스타일 /
body {
font-size: 16px;
}
/ 화면 너비가 600px 이하일 때 /
@media (max-width: 600px) {
body {
font-size: 12px; / 작은 화면에서는 글씨 크기를 줄임 /
}
}
- 실행 결과: 화면 너비가 600px 이하일 때 글씨 크기가 12px로 줄어듭니다.
- 동작 설명:
- body의 기본 글씨 크기를 16px로 설정합니다.
- 화면 너비가 600px 이하일 경우, 글씨 크기를 12px로 변경합니다.
플렉스박스 사용 예제
.container {
display: flex; / 플렉스박스를 사용하여 요소를 배치 /
justify-content: space-around; / 요소들 사이의 간격을 고르게 배분 /
}
.item {
width: 100px; / 각 아이템의 너비를 100px로 설정 /
height: 100px; / 각 아이템의 높이를 100px로 설정 /
background-color: lightblue; / 배경색을 설정 /
}
- .container에 display: flex로 설정하여 자식 요소들을 플렉스 컨테이너로 만듭니다.
- justify-content: space-around로 요소들 사이의 간격을 고르게 배분합니다.
4. 실전 활용 예제
쇼핑몰에서 장바구니 구현할 때
.cart {
display: flex; / 플렉스박스를 사용 /
flex-wrap: wrap; / 공간이 부족하면 줄바꿈 /
}
.cart-item {
flex: 1 1 200px; / 최소 200px 너비, 공간에 따라 크기 조절 /
margin: 10px; / 요소 간의 여백 설정 /
}
블로그 레이아웃
@media (min-width: 800px) {
.blog-post {
display: flex; / 블로그 포스트를 플렉스 레이아웃으로 설정 /
}
.blog-post img {
flex: 1; / 이미지가 남는 공간을 차지하도록 설정 /
}
.blog-post .content {
flex: 2; / 텍스트가 이미지보다 두 배로 차지하도록 설정 /
}
}
5. 흔한 실수와 주의사항
실수 1: 미디어 쿼리 순서
잘못된 코드:
@media (max-width: 600px) {
/ 스타일 /
}
@media (min-width: 601px) {
/ 스타일 /
}
올바른 코드:
@media (min-width: 601px) {
/ 스타일 /
}
@media (max-width: 600px) {
/ 스타일 /
}
실수 2: 플렉스박스의 기본 설정
잘못된 코드:
.container {
display: block; / 플렉스박스가 아닌 블록으로 설정 /
}
올바른 코드:
.container {
display: flex; / 플렉스박스 사용 /
}
display: flex를 설정해야 합니다.6. 정리
다음에 학습하면 좋은 주제: