๋งˆํฌ์—…/Html & Css

CSS์˜ ๊ฝƒ, Flexbox

Rainbow๐ŸŒˆCoder 2022. 4. 23. 19:41
728x90

[CSS] ํ™”๋ฉด ์ค‘์•™ ๋ฐฐ์น˜ (Flexbox/Grid) | Engineering Blog by Dale Seo

 

[CSS] ํ™”๋ฉด ์ค‘์•™ ๋ฐฐ์น˜ (Flexbox/Grid)

Engineering Blog by Dale Seo

www.daleseo.com

 

์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Flex๋ฅผ ์ตํ˜€๋ณด์ž

์ด ํŠœํ† ๋ฆฌ์–ผ์€ “์ฐจ์„ธ๋Œ€ CSS ๋ ˆ์ด์•„์›ƒ” ์‹œ๋ฆฌ์ฆˆ์˜ ์ฒซ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Flex๋ฅผ ์ตํ˜€๋ณด์ž ์ด๋ฒˆ์—์•ผ๋ง๋กœ CSS Grid๋ฅผ ์ตํ˜€๋ณด์ž ๋ฒŒ์จ๋ถ€ํ„ฐ ์Šคํฌ๋กค์˜ ์••๋ฐ•์ด ๋А๊ปด์ง€๊ณ ,‘์ข€ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆ„

studiomeal.com

*์—˜๋ฆฌ๋‹˜์˜ ๋ฌด๋ฃŒ ์œ ํŠœ๋ธŒ ์˜์ƒ์„ ๋ณด๊ณ  ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค!

 

1. flexbox๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค์— ์ ์šฉ๋˜๋Š” ์†์„ฑ๊ฐ’๋“ค์ด ์กด์žฌํ•˜๊ณ ,

๊ทธ ์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค ์•ˆ์— ์žˆ๋Š” ์•„์ดํ…œ๋“ค์— ์ ์šฉ๋˜๋Š” ์†์„ฑ๊ฐ’๋“ค๋„ ์กด์žฌํ•œ๋‹ค.

2. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊พธ๋ฉฐ์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๊ฐ’๋“ค์€ ์œ„์˜ ์บก์ณ์™€ ๊ฐ™์ด ์กด์žฌํ•œ๋‹ค.

3. ์•„์ดํ…œ๋“ค์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๊ฐ’๋“ค์€ ์œ„์˜ ์บก์ฒ˜์™€ ๊ฐ™๋‹ค

์•„์ดํ…œ๋“ค์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ •๋ ฌ(์ด ์ˆ˜ํ‰์ถ•์ด ๋ฉ”์ธ์ถ•,main axis), ์ด์— ์ˆ˜์งํ•˜๋Š” ์ถ•์ด ๋ฐ˜๋Œ€์ถ•(cross axis)์ด ๋œ๋‹ค.
์ด๊ฑด ์œ„์—์„œ ์•„๋ž˜๋กœ main axis๋ฅผ ํƒ€๊ณ  ์•„์ดํ…œ๋“ค์ด ์ •๋ ฌ๋˜๊ณ  ์žˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์ˆ˜ํ‰์ถ•์ด cross axis๊ฐ€ ๋œ๋‹ค.

4. flexbox์—๋Š” ์ค‘์‹ฌ์ถ•๊ณผ ๋ฐ˜๋Œ€์ถ•์ด ์žˆ๋‹ค. ์ค‘์‹ฌ์ถ•์„ ์ˆ˜ํ‰์ด๋ƒ ์ˆ˜์ง์ด๋ƒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ๋ฐ˜๋Œ€์ถ•์ด ๊ฒฐ์ •๋œ๋‹ค.

 

<์‹ค์Šต>

1. JS Bin - Collaborative JavaScript Debugging ์—์„œ ์ง„ํ–‰

2. ์‹ค์Šต์„ ์œ„ํ•ด html์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธํŒ…

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div class="container">
    <div class="item item1">1</div>
    <div class="item item2">2</div>
    <div class="item item3">3</div>
    <div class="item item4">4</div>
    <div class="item item5">5</div>
    <div class="item item6">6</div>
    <div class="item item7">7</div>
    <div class="item item8">8</div>
    <div class="item item9">9</div>
    <div class="item item10">10</div>
  </div>
</body>
</html>

๊ฟ€ํŒ : div.contianer>div.item.item${$}*10 ๊นŒ์ง€ ์ž‘์„ฑ ํ›„ tab key๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฐ”๋กœ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋œ๋‹ค.

height: 100vh(viewport height) vs 100%(์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ถ€๋ชจ ๋†’์ด์˜ 100%๋ฅผ ์ฑ„์šฐ๊ฒ ๋‹ค)

ํ˜„์žฌ container์˜ ๋ถ€๋ชจ๋Š” BODY์ธ๋ฐ ์ด ๋ฐ”๋””์˜ ๋ถ€๋ชจ๋Š” html์ด๋‹ค. html์˜ ๋†’์ด๊ฐ€ 100%๊ฐ€ ์•„๋‹ˆ๋ผ์„œ

์ž์‹๋“ค ๋†’์ด๊ฐ€ ๋‹ค ์ฑ„์›Œ์ง€์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.(๋ฌผ๋ก  HTML์˜ HEIGHT์„ 100%์œผ๋กœ ์ฃผ๋ฉด ์ž์‹๋“ค ๋†’์ด๋„ ๋‹ค ์ฑ„์›Œ์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋œ๋‹ค)

๋ถ€๋ชจ์˜ ๋†’์ด์— ์ƒ๊ด€์—†์ด, ๋ณด์ด๋Š” viewport ๋†’์ด๋ฅผ 100% ์ง€์ •ํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด 100vh๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

 

3. ํ™”๋ฉด ์ค‘๊ฐ„์— ๋ฐฐ์น˜ํ•˜๊ธฐ

body {
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
728x90