1.1 ๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์ (Mobile-First)
Responsive design โ ์น ์ฌ์ดํธ๊ฐ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ฅ์น์ ์ ์ํ ์ ์๋๋ก ํ๋ ์น ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ์ต์์ ์ฌ์ฉ ํธ์์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ์ํ ๋ ์ด์์์ ์ฃผ์ ๋ชฉํ๋ ์ฌ์ฉ์๊ฐ ์ด๋ค ์ฅ์น๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ฌ์ดํธ๊ฐ ํธ๋ฆฌํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์์ ํ๋ฉด์ ๋ชจ๋ฐ์ผ ์ฅ์น์ฉ ๋์์ธ์ ์ฒ์ ๋ง๋ค๊ณ , ๋ ํฐ ํ๋ฉด์ผ๋ก ํ์ฅํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ดํธ์ ๊ฐ์ฅ ์ค์ํ ์์์ ๊ธฐ๋ฅ์ ์ง์คํ ์ ์๋๋ก ๋์์ค๋๋ค.
๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฅ์ :
- ๋ชจ๋ฐ์ผ ์ฌ์ฉ์์๊ฒ ์ต์ ํ๋ ์ฝํ ์ธ
- ์์ ํ๋ฉด์ ๋ง์ถ ๋์์ธ๊ณผ ๊ธฐ๋ฅ์ ๋จ์ํ
- ์ฝํ ์ธ ์์ ์ค์์ผ๋ก์จ ์ฑ๋ฅ ํฅ์
์์:
/* ๋ชจ๋ฐ์ผ ์ฅ์น์ฉ ๊ธฐ๋ณธ ์คํ์ผ */
body {
font-size: 16px;
margin: 0;
padding: 0;
}
/* ๋ ํฐ ํ๋ฉด์ฉ ์คํ์ผ */
@media (min-width: 768px) {
body {
font-size: 18px;
}
}
1.2 ์ ์ง์ ํฅ์ (Progressive Enhancement)
์ ์ง์ ํฅ์์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๋ค์, ๋ ๊ฐ๋ ฅํ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น๋ฅผ ์ํด ๊ฐ์ ์ฌํญ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์์ ์ฅ์น๊ฐ ์ผ๋ถ ๊ธฐ๋ฅ์ด๋ ์คํ์ผ์ ์ง์ํ์ง ์๋๋ผ๋ ์ฝํ ์ธ ์ ์ ๊ทผํ ์ ์๊ฒ ๋ณด์ฅํฉ๋๋ค.
์ ์ง์ ํฅ์์ ์ฅ์ :
- ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ ๊ณต
- ๋ ํ๋์ ์ธ ์ฅ์น๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ ํฅ์๋ ๊ฒฝํ ์ ๊ณต
- ์ฝํ ์ธ ๋ ๊ธฐ๋ฅ์ ์์ค ์ํ ๊ฐ์
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>์ ์ง์ ํฅ์</title>
<style>
/* ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๊ธฐ๋ณธ ์คํ์ผ */
body {
font-family: Arial, sans-serif;
}
/* ํ๋์ ์ธ ๋ธ๋ผ์ฐ์ ์ ๋ํ ํฅ์๋ ์คํ์ผ */
@supports (display: grid) {
.container {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
</style>
</head>
<body>
<div class="container">
<div>์ฝํ
์ธ 1</div>
<div>์ฝํ
์ธ 2</div>
</div>
</body>
</html>
1.3 ๋ ์ด์์ ์ ์ฐ์ฑ (Fluid Layouts)
๋ ์ด์์ ์ ์ฐ์ฑ์ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ํ ์ ์๋ ์ ์ฐํ ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋๋ ์ ์ฐํ ์ปจํ ์ด๋ ์ฌ์ฉ์ ํฌํจํ ์ ์์ต๋๋ค.
๋ ์ด์์ ์ ์ฐ์ฑ์ ์ฅ์ :
- ๋ค์ํ ์ฅ์น์์ ์ฝํ ์ธ ํ์ ํฅ์
- ํ๋ฉด ํฌ๊ธฐ ๋ณ๊ฒฝ์ ๋ํ ๋ ๋์ ์ ์
- ์ฌ์ฉ ํธ์์ฑ๊ณผ ์ฝํ ์ธ ์ ๊ทผ์ฑ ํฅ์
์์:
<div class="container">
<div class="item-1">Content item 1</div>
<div class="item-2">
Etiam scelerisque lectus nulla, eget convallis orci convallis vel. Etiam sed interdum sem. Nunc vestibulum lectus nibh, in volutpat velit fermentum eget. Mauris in risus tincidunt, sodales odio et, rutrum ligula. In iaculis congue ex in laoreet. Sed id eros porttitor, finibus diam ultrices, consectetur leo. Fusce aliquam, nibh ac sollicitudin viverra, felis libero fringilla orci, nec auctor elit sapien non arcu. Proin dolor mi, iaculis ut velit id, vestibulum consectetur metus. Duis venenatis felis a diam elementum, eget ullamcorper leo scelerisque. Sed tempus euismod urna et tristique. Duis at odio quis libero commodo ullamcorper id vel odio. Maecenas volutpat rhoncus sodales. Mauris eget nunc accumsan, rhoncus massa at, placerat lorem.
Etiam ullamcorper elementum tellus non euismod. Mauris euismod mi nisi, sed egestas ligula varius sed. Nunc tortor elit, hendrerit sed gravida in, tempus nec augue. Aliquam vitae condimentum velit. Sed id massa ac felis tempor elementum. Aenean at nulla ipsum. Fusce sed cursus tortor. Duis sodales rhoncus eros, non aliquam ante ultricies ut. Pellentesque auctor ultricies aliquet. In laoreet enim dolor, vel consectetur sapien laoreet eu.
In efficitur pharetra ex convallis egestas. Praesent egestas, sapien fermentum consectetur vestibulum, quam dui pharetra urna, vitae finibus arcu lacus quis mauris. Quisque consectetur lorem sapien, nec pulvinar elit varius vitae. Cras elementum risus lacus, a interdum tellus euismod ac. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas pharetra, odio vel facilisis venenatis, ipsum leo viverra ligula, ut venenatis enim ipsum ut lectus. Fusce cursus mollis congue.
</div>
</div>
.container {
width: 100%;
padding: 20px;
box-sizing: border-box;
color: white;
}
.item-1 {
min-height: 50px;
width: calc(100% / 3);
float: left;
background: purple;
}
.item-2 {
background: gray;
}
1.4 ์ฝํ ์ธ ๊ณ์ธต ๊ตฌ์กฐ (Content Hierarchy)
์ฝํ ์ธ ๊ณ์ธต ๊ตฌ์กฐ๋ ๋ฐ์ํ ๋ ์ด์์์์ ์ค์ํฉ๋๋ค. ์๋ํ๋ฉด ์ ๋ณด๋ฅผ ์ด๋ค ์ฅ์น์์๋ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์กฐ์งํํ ์ ์๊ฒ ๋์์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ ๋ชฉ, ๋จ๋ฝ, ๋ชฉ๋ก ๋ฐ ๋ค๋ฅธ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ฌ ๋ช ํํ๊ณ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
์ฝํ ์ธ ๊ณ์ธต ๊ตฌ์กฐ์ ์ฅ์ :
- ์ฝ๊ธฐ ์ฌ์ด ์ ๋ณด ๋ฐ ์ธ์ ํฅ์
- ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ฝํ ์ธ ์ ๊ทผ์ฑ ํฅ์
- ์ฌ์ดํธ ํ์ ๋ฐ ์ํธ์์ฉ์ ์ฉ์ด์ฑ
์์:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>์ฝํ
์ธ ๊ณ์ธต ๊ตฌ์กฐ</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h1 {
font-size: 2em;
}
h2 {
font-size: 1.5em;
}
p {
font-size: 1em;
line-height: 1.5;
}
</style>
</head>
<body>
<h1>์ฃผ์ ์ ๋ชฉ</h1>
<h2>๋ถ์ ๋ชฉ</h2>
<p>
์ด๋ ๋ถ์ ๋ชฉ์ ์ด์ด์ง๋ ํ
์คํธ ๋จ๋ฝ์ ์์
๋๋ค.
ํ
์คํธ๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์์ด์ผ ํฉ๋๋ค.
</p>
</body>
</html>
GO TO FULL VERSION