CSS RWD - 소개

안녕하세요, 웹 개발자 지망생 여러분! 오늘 우리는 CSS를 사용한 반응형 웹 디자인(RWD)의 매력적인 세계로 접수합니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 여정을 안내해드리는 것을 기대하고 있습니다. 시작해보겠습니다!

CSS RWD - Introduction

반응형 웹 디자인이란?

생각해보세요, 다양한 크기의 토지에 완벽하게 맞는 집을 짓는 일. 이것이 바로 RWD가 웹사이트에 하는 일입니다! 반응형 웹 디자인은 모든 장치와 화면 크기에서 잘 보이는 웹 페이지를 만드는 접근 방식입니다.

옛날에는 데스크톱과 모바일을 위한 별도의 웹사이트를 만드는 것이 일반적이었습니다. 두 개의 집을 짓는 것처럼 말입니다. 하지만 RWD를 사용하면 어떤 화면에도 자동으로 조정되는 단일 웹사이트를 만들 수 있습니다. 멋지지 않나요?

RWD의 중요성

오늘날 사람들은 스마트폰, 태블릿, 랩톱, 심지어 스마트 냉장고 등 다양한 장치를 통해 웹사이트를 방문합니다! (그게 정말로 존재합니다!) 여러 장치에서 잘 보이지 않는 웹사이트는 "비반응형 디자인"이라고 말할 때보다 빠르게 방문자를 잃을 수 있습니다.

RWD 구조

RWD의 구조는 세 가지 주요 구성 요소로 이루어져 있습니다:

  1. 유연한 레이아웃
  2. 유연한 이미지 및 미디어
  3. CSS 미디어 쿼리

이제 하나씩 알아보겠습니다.

1. 유연한 레이아웃

유연한 레이아웃은 고무줄처럼 - 다양한 화면 크기에 맞춰 확장하고 수축됩니다. 이를 위해 상대적인 단위(%)를 사용하여 고정된 단위(픽셀) 대신 레이아웃 요소를 정의합니다.

여기 간단한 예제가 있습니다:

.container {
width: 80%;
margin: 0 auto;
}

이 코드에서 컨테이너는 항상 부모 요소의宽度의 80%가 됩니다. 화면 크기에 관계없이 말입니다. 집이 맨션에서 작은 집으로 바뀌더라도 항상 80%의 크기로 유지되는 방처럼!

2. 유연한 이미지 및 미디어

우리는 이미지와 비디오가 레이아웃과 마찬가지로 유연해야 합니다. 이미지를 반응형으로 만드는 방법은 다음과 같습니다:

img {
max-width: 100%;
height: auto;
}

이 CSS는 브라우저에게 "이미지를 컨테이너보다 더 넓지 않게 하고, 가로 세로 비율을 유지하면서 높이를 조정하라"고 지시합니다. 마치 사진이 어떤 프레임에도 맞게 자동으로 크기 조정되는 것처럼!

3. CSS 미디어 쿼리

미디어 쿼리는 RWD의 비밀 재료입니다. 장치의 특성(가장 흔하게는 뷰포트의 너비)에 따라 다른 스타일을 적용할 수 있게 해줍니다.

기본적인 미디어 쿼리를 보겠습니다:

@media screen and (max-width: 600px) {
.container {
width: 100%;
}
}

이 코드는 "화면 너비가 600픽셀 이하인 경우, 컨테이너를 화면 전체 너비로 만들라"고 지시합니다. 마치 집이 작아지면 전체 집을 채우는 방처럼!

모든 것을 함께 모아서

이제 이 세 가지 구성 요소가 어떻게 간단한 반응형 레이아웃에서 작동하는지 보겠습니다:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Web Design Example</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
.container {
width: 80%;
margin: 0 auto;
}
.header {
background-color: #f0f0f0;
padding: 20px;
}
.content {
display: flex;
flex-wrap: wrap;
}
.main {
flex: 2;
padding: 20px;
}
.sidebar {
flex: 1;
background-color: #e0e0e0;
padding: 20px;
}
img {
max-width: 100%;
height: auto;
}
@media screen and (max-width: 600px) {
.container {
width: 100%;
}
.content {
flex-direction: column;
}
.sidebar {
order: -1;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>반갑습니다! 제 반응형 사이트에 오신 것을 환영합니다</h1>
</div>
<div class="content">
<div class="main">
<h2>주요 콘텐츠</h2>
<p>이곳은 주요 콘텐츠 영역입니다. 더 큰 화면에서는 더 넓게 보입니다.</p>
<img src="https://via.placeholder.com/600x300" alt="Placeholder Image">
</div>
<div class="sidebar">
<h2>사이드바</h2>
<p>이곳은 사이드바입니다. 작은 화면에서는 주요 콘텐츠 위에 나타납니다.</p>
</div>
</div>
</div>
</body>
</html>

이 예제에서 우리는 간단한 반응형 레이아웃을 만들었습니다. 헤더, 주요 콘텐츠 영역, 그리고 사이드바를 포함하고 있습니다. 레이아웃은 다음과 같이 조정됩니다:

  • 더 큰 화면에서는 주요 콘텐츠와 사이드바가 옆에 배치됩니다.
  • 작은 화면(600px 이하)에서는 사이드바가 주요 콘텐츠 위에 나타나고, 컨테이너가 화면 전체 너비를 차지합니다.

브라우저 창을 조정해보세요! 어떻게 반응하는지 확인해보세요!

결론

그렇습니다, 여러분! 여러분이 반응형 웹 디자인의 세계로 첫 걸음을 뗐습니다. 반응형 웹사이트를 만드는 것은 마치 웹 요가 강사인 것처럼 - 유연성이 전부입니다!

계속 여정을 떠나면서 더 발전된 기술과 도구를 발견할 것입니다. 하지만 지금은 이 기본기를 연습하고, 다양한 레이아웃을 실험하고, 가장 중요한 것은 즐겁게 만들어보세요!

행복하게 코딩하세요, 여러분의 웹사이트가 항상 반응형이 되길 바랍니다!

RWD 구성 요소 설명 예제
유연한 레이아웃 레이아웃 요소에 상대적인 단위 사용 width: 80%;
유연한 이미지 이미지가 컨테이너에 맞게 확장 max-width: 100%; height: auto;
미디어 쿼리 장치 특성에 따라 스타일 적용 @media screen and (max-width: 600px) { ... }

Credits: Image by storyset