CSS에서의 반응형 디자인 개요
이 글에서는 CSS에서의 반응형 디자인 개요를 설명합니다.
반응형 디자인의 기본 개념과 이를 구현하는 데 있어서 CSS의 역할에 대해 개괄적으로 설명하겠습니다.
YouTube Video
미리보기를 위한 HTML
css-responsive-overview.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-responsive-overview.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Responsive Design</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Responsive Design Related Properties</h2>
20 </header>
21 <article>
22 <h3>Media Queries</h3>
23 <section>
24 <header><h4>CSS</h4></header>
25<pre class="sample">
26/* When the screen width is 600px or less */
27@media (max-width: 600px) {
28 body {
29 background-color: lightblue;
30 }
31}
32/* When the screen width is between 601px and 1200px */
33@media (min-width: 601px) and (max-width: 1200px) {
34 body {
35 background-color: lightgreen;
36 }
37}
38/* When the screen width is 1201px or more */
39@media (min-width: 1201px) {
40 body {
41 background-color: lightyellow;
42 }
43}
44</pre>
45 </section>
46 </article>
47 <article>
48 <h3>Fluid Layouts</h3>
49 <section>
50 <header><h4>CSS</h4></header>
51<pre class="sample">
52.container {
53 width: 80%; /* 80% width relative to the parent element */
54 margin: 0 auto; /* Center the element */
55}
56</pre>
57 </section>
58 </article>
59 <article>
60 <h3>Responsive Images</h3>
61 <section>
62 <header><h4>CSS</h4></header>
63<pre class="sample">
64img {
65 max-width: 100%;
66 height: auto;
67}
68</pre>
69 </section>
70 </article>
71 <article>
72 <h3>Viewport</h3>
73 <section>
74 <header><h4>HTML</h4></header>
75 <pre><meta name="viewport" content="width=device-width, initial-scale=1.0"></pre>
76 </section>
77 </article>
78 <article>
79 <h3>CSS Frameworks</h3>
80 <section>
81 <header><h4>HTML</h4></header>
82<pre>
83<div class="container">
84 <div class="row">
85 <div class="col-md-6">Left content</div>
86 <div class="col-md-6">Right content</div>
87 </div>
88</div>
89</pre>
90 </section>
91 </article>
92 <article>
93 <h3>Flexbox & Grid Layout</h3>
94 <section>
95 <header><h4>CSS</h4></header>
96<pre class="sample">
97/* Flex Example */
98.container {
99 display: flex;
100 flex-wrap: wrap; /* Allow elements to wrap */
101}
102
103.item {
104 flex: 1 1 200px; /* Each item has a minimum width of 200px */
105}
106
107/* Grid Example */
108.container {
109 display: grid;
110 grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
111 gap: 16px;
112}
113</pre>
114 </section>
115 </article>
116 </main>
117</body>
118</html>
CSS에서의 반응형 디자인 개요
CSS에서 반응형 디자인은 스마트폰, 태블릿, 데스크톱 등 다양한 기기와 화면 크기에 맞게 웹페이지의 레이아웃과 콘텐츠를 적절히 표시하는 기법입니다. 반응형 디자인을 구현하기 위해 주로 다음과 같은 기술과 방법이 사용됩니다.
미디어 쿼리(Media Queries)
1/* When the screen width is 600px or less */
2@media (max-width: 600px) {
3 body {
4 background-color: lightblue;
5 }
6}
7/* When the screen width is between 601px and 1200px */
8@media (min-width: 601px) and (max-width: 1200px) {
9 body {
10 background-color: lightgreen;
11 }
12}
13/* When the screen width is 1201px or more */
14@media (min-width: 1201px) {
15 body {
16 background-color: lightyellow;
17 }
18}
미디어 쿼리는 기기의 너비, 높이, 해상도 등 다양한 조건에 따라 다른 CSS 규칙을 적용할 수 있도록 하는 기능입니다. 이를 통해 화면 크기에 따라 다른 스타일을 적용할 수 있습니다.
이 예에서는 화면 너비에 따라 배경 색이 변경됩니다.
유동적 레이아웃(Fluid Layouts)
1.container {
2 width: 80%; /* 80% width relative to the parent element */
3 margin: 0 auto; /* Center the element */
4}
반응형 디자인에서는 요소의 너비와 높이를 절대 픽셀 값 대신 퍼센트나 em
과 같은 상대 단위를 사용하여 지정합니다. 이를 통해 레이아웃이 화면 크기에 따라 유연하게 변경됩니다.
반응형 이미지(Responsive Images)
1img {
2 max-width: 100%;
3 height: auto;
4}
이미지도 화면 크기에 따라 비율을 조정하도록 설정됩니다. 예를 들어, max-width
를 사용하여 이미지를 부모 요소의 너비를 초과하지 않도록 조정할 수 있습니다.
뷰포트 설정(Viewport Settings)
1<meta name="viewport" content="width=device-width, initial-scale=1.0">
HTML에서 <meta>
태그를 사용하여 브라우저가 기기의 화면 너비를 올바르게 해석하도록 설정합니다. 이 설정이 없으면 특히 모바일 기기에서 반응형 디자인이 제대로 작동하지 않을 수 있습니다.
CSS 프레임워크 활용
Bootstrap과 Tailwind CSS 같은 CSS 프레임워크는 반응형 디자인을 효율적으로 구현하는 데 자주 사용됩니다. 이 프레임워크들은 사전에 정의된 클래스를 사용하여 손쉽게 반응형 레이아웃을 만들 수 있도록 설계되었습니다.
예: Bootstrap의 그리드 시스템
1<div class="container">
2 <div class="row">
3 <div class="col-md-6">Left content</div>
4 <div class="col-md-6">Right content</div>
5 </div>
6</div>
위의 예에서 화면 너비가 md
(중간 크기, 일반적으로 768픽셀 이상)일 때 두 개의 열이 나란히 배열되지만, 더 좁은 화면에서는 세로로 배열됩니다.
Flexbox 및 Grid 레이아웃
1/* Flex Example */
2.container {
3 display: flex;
4 flex-wrap: wrap; /* Allow elements to wrap */
5}
6
7.item {
8 flex: 1 1 200px; /* Each item has a minimum width of 200px */
9}
10
11/* Grid Example */
12.container {
13 display: grid;
14 grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
15 gap: 16px;
16}
CSS flexbox
또는 grid
를 사용하면 유연한 레이아웃 조정이 가능합니다. 이러한 레이아웃 기술은 화면 크기에 따라 레이아웃을 자동으로 조정하기 쉽게 만들어 반응형 디자인에 적합합니다.
요약
반응형 디자인은 사용자가 사용하는 기기에 상관없이 웹사이트를 편리하게 볼 수 있도록 보장하는 중요한 방법입니다. 미디어 쿼리, 유연한 레이아웃, 프레임워크 및 Flexbox와 Grid 같은 새로운 레이아웃 기술을 결합하여 보다 유연하고 적응력 있는 웹 페이지를 만들 수 있습니다.
위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.