๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HTML5 & CSS3

[HTML5 & CSS3] ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 14.
๋ฐ˜์‘ํ˜•

*ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์ด๋ž€?

ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์ด๋ž€ ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•ด ํ”Œ๋ ‰์Šค ๋ฐ•์Šค๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํ”Œ๋ ‰์Šค ๋ฐ•์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ฌ์œ  ๊ณต๊ฐ„์— ๋”ฐ๋ผ ๋„ˆ๋น„๋‚˜ ๋†’์ด, ์œ„์น˜๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ ˆ์ด์•„์›ƒ์˜ ๋ฐฐ์น˜๋‚˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ด์•ผ ํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

โ€‹

โ€‹

*display ์†์„ฑ - ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ ์ง€์ •ํ•˜๊ธฐ

ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋จผ์ € ์›น ์ฝ˜ํ…์ธ ๋ฅผ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฌถ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ฐฐ์น˜ํ•˜๋ ค๋Š” ์›น ์š”์†Œ๋“ค์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์š”์†Œ๋“ค์„ ๊ฐ์‹ธ๋Š” ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ ํŠน์ • ์š”์†Œ๊ฐ€ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋™์ž‘ํ•˜๋ ค๋ฉด display ์†์„ฑ์„ ์ด์šฉํ•ด ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ํ˜•ํƒœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

โ€‹

<style>
   #container {
      display:flex;
   }
</style>
<div id="container">
<div></div>
<div></div>
</div>

 

โ€‹

โ€‹

*display ์†์„ฑ๊ณผ ๋ธŒ๋ผ์šฐ์ € ์ ‘๋‘์‚ฌ

ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์€ ์ตœ์‹  ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋ชจ๋‘ ์ง€์›๋˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ์‹ ๋ฒ„์ „์—์„œ๋„ ์ง€์›๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ํ”Œ๋ ‰์Šค ๋ฐ•์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ ๋ธŒ๋ผ์šฐ์ € ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ํŠนํžˆ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์ •ํ•˜๋Š” display ์†์„ฑ์˜ ๊ฒฝ์šฐ, ์ ‘๋‘์‚ฌ๊ฐ€ ์ƒ๋‹นํžˆ ๋ณต์žกํ•˜๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ € ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ ํ‘œ์‹œํ•œ๋‹ค.

โ€‹

.wrapper {
   display: -webkit-box; /* iOS 6 ์ดํ•˜, ์‚ฌํŒŒ๋ฆฌ 3.1 */
   display: -moz-box; /* ํŒŒ์ด์–ดํญ์Šค 19 ์ดํ•˜ */
   display: -ms-flexbox; /* IE 10 */
   display: -webkit-flex; /* ์›นํ‚ท ๊ตฌ ๋ฒ„์ „ */
   display: flex; /* ํ‘œ์ค€ ์ŠคํŽ™ */
}

 

โ€‹

โ€‹

*flex-direction ์†์„ฑ - ํ”Œ๋ ‰์Šค ๋ฐฉํ–ฅ ์ง€์ •ํ•˜๊ธฐ

ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์ •ํ–ˆ๋‹ค๋ฉด ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์„ ๋ฐฐ์น˜ํ•  ๋ฐฉํ–ฅ์„ ์•Œ๋ ค ์ฃผ์–ด์•ผ ํ•œ๋‹ค. flex-direction ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ์ฃผ์ถ•์„ ๊ฐ€๋กœ(row)๋กœ ํ• ์ง€, ์„ธ๋กœ(column)๋กœ ํ• ์ง€ ์ง€์ •ํ•œ๋‹ค. ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์ธ row๋กœ ์ธ์‹ํ•œ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

flex-direction: row | row-inverse | column | column-inverse

 

์†์„ฑ ๊ฐ’

์„ค๋ช…

row

์ฃผ์ถ•์„ ๊ฐ€๋กœ๋กœ ๊ต์ฐจ์ถ•์„ ์„ธ๋กœ๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์€ ์ฃผ์ถ• ์‹œ์ž‘์ ์—์„œ ๋์ ์œผ๋กœ(์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ) ๋ฐฐ์น˜๋œ๋‹ค.

row-inverse

์ฃผ์ถ•์„ ๊ฐ€๋กœ๋กœ ๊ต์ฐจ์ถ•์„ ์„ธ๋กœ๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์€ ์ฃผ์ถ• ๋์ ์—์„œ ์‹œ์ž‘์ ์œผ๋กœ(์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ) ๋ฐฐ์น˜๋œ๋‹ค.

column

์ฃผ์ถ•์„ ์„ธ๋กœ๋กœ ๊ต์ฐจ์ถ•์„ ๊ฐ€๋กœ๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์€ ์ฃผ์ถ• ์‹œ์ž‘์ ์—์„œ ๋์ ์œผ๋กœ(์œ„์ชฝ์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ) ๋ฐฐ์น˜๋œ๋‹ค.

column-inverse

์ฃผ์ถ•์„ ์„ธ๋กœ๋กœ ๊ต์ฐจ์ถ•์„ ๊ฐ€๋กœ๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์€ ์ฃผ์ถ• ๋์ ์—์„œ ์‹œ์ž‘์ ์œผ๋กœ(์•„๋ž˜์ชฝ์—์„œ ์œ„์ชฝ์œผ๋กœ) ๋ฐฐ์น˜๋œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

<style>
   #container {
      display:flex; /* ๊ธฐ๋ณธ ๊ฐ’ row๋กœ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ ์ง€์ • */
   }
   #container div {
      width:200px;
      border: 2px solid black;
      background:#ccc;
   }
</style>
<div id="container">
<div id="box1"><h2>1</h2></div> /* ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ๋“ค */
<div id="box2"><h2>2</h2></div> /* ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ๋“ค */
<div id="box3"><h2>3</h2></div> /* ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ๋“ค */
</div>

 

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ ์„ธ๋กœ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

<style>
   #container
      display: flex;
      flex-direction: column;
   }
</style>

 

โ€‹

โ€‹

*flex-wrap ์†์„ฑ - ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์„ ํ•œ ์ค„ ๋˜๋Š” ์—ฌ๋Ÿฌ ์ค„๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ๋“ค์€ ์ฃผ์ถ• ๋ฐฉํ–ฅ์„ ๋”ฐ๋ผ ํ•œ ์ค„๋กœ ๋ฐฐ์น˜๋œ๋‹ค. ํ•˜์ง€๋งŒ flex-wrap ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ ํ‘œ์‹œํ•œ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

flex-wrap: no-wrap | wrap | wrap-reverse

 

์†์„ฑ ๊ฐ’

์„ค๋ช…

no-wrap

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ๋“ค์„ ํ•œ ์ค„์— ํ‘œ์‹œํ•œ๋‹ค.

wrap

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ์ค„์— ํ‘œ์‹œํ•œ๋‹ค.

wrap-reverse

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์„ ์—ฌ๋Ÿฌ ์ค„์— ํ‘œ์‹œํ•˜๋˜ ๊ธฐ์กด ๋ฐฉํ–ฅ๊ณผ ๋ฐ˜๋Œ€๋กœ ๋ฐฐ์น˜ํ•œ๋‹ค.

โ€‹

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

<style>
   #container {
      display: flex;
      flex-wrap: wrap;
   }
</style>

 

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

<style>
   #container {
      display: flex;
      flex-wrap: wrap-reverse;
   }
</style>

 

โ€‹

โ€‹

*flex-flow ์†์„ฑ - ํ”Œ๋ ‰์Šค ๋ฐฉํ–ฅ๊ณผ ์—ฌ๋Ÿฌ ์ค„์˜ ๋ฐฐ์น˜๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ง€์ •ํ•˜๊ธฐ

ํ”Œ๋ ‰์Šค ๋ฐ•์Šค๋ฅผ ์ด์šฉํ•ด ํ•ญ๋ชฉ๋“ค์„ ๋ฐฐ์น˜ํ•  ๋•Œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฐฉํ–ฅ๊ณผ ์—ฌ๋Ÿฌ ์ค„ ๋ฐฐ์น˜ ์—ฌ๋ถ€๋Š” flew-flow ์†์„ฑ์„ ์ด์šฉํ•ด ํ•œ๊บผ๋ฒˆ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ”Œ๋ ‰์Šค ๋ฐฐ์น˜ ๋ฐฉํ–ฅ๊ณผ ์—ฌ๋Ÿฌ ์ค„์˜ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•์„ ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„ํ•ด ํ‘œ์‹œํ•œ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ flew-flow:row no-wrap์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

flex-flow: <ํ”Œ๋ ‰์Šค ๋ฐฉํ–ฅ> <ํ”Œ๋ ‰์Šค ์ค„ ๋ฐฐ์น˜>

 

โ€‹

โ€‹

*order ์†์„ฑ - ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๋ฐฐ์น˜ ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์€ ์†Œ์Šค ์ฝ”๋“œ์— ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์ถ•์„ ๋”ฐ๋ผ ๋ฐฐ์น˜๋˜์ง€๋งŒ order ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ๋ฐฐ์น˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

order ๊ฐ’์ด 0์ด๋ผ๋ฉด ์†Œ์Šค์— ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜๊ณ  order ๊ฐ’์„ ์ˆซ์ž๋กœ ํ•˜๋ฉด ๊ทธ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฐฐ์น˜๋œ๋‹ค. ์ด๋•Œ order ์†์„ฑ์€ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ผ ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์—์„œ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

order : 0 | ์ˆซ์ž

 

<style>
   #container {
      display:flex;
   }
   #box1 {
      order:2;
   }
   #box2 {
      order:3;
   }
   #box3 {
      order:1;
   }
</style>
<div id="container">
<div id="box1"><h2>box1</h2></div>
<div id="box2"><h2>box2</h2></div>
<div id="box3"><h2>box3</h2></div>
</div>

 

โ€‹

โ€‹

*flex ์†์„ฑ - ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ ํฌ๊ธฐ ์กฐ์ ˆํ•˜๊ธฐ

flex ์†์„ฑ์€ ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๋„ˆ๋น„๋ฅผ ๋Š˜์ด๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋„๋ก ์„ธ ๊ฐ€์ง€ ๊ฐ’์„ ์ด์šฉํ•ด ํ‘œ์‹œํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ๋Š˜๋ฆด ๋น„์œจ, ๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ์ค„์ผ ๋น„์œจ, ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ๊ธฐ๋ณธ ๊ฐ’์ด๋‹ค.

โ€‹

๊ธฐ๋ณธํ˜•)

flex : [<flex-grow> <flex-shrink> <flex-basis> | auto | initial

 

์†์„ฑ ๊ฐ’

์„ค๋ช…

<flex-grow>

<flex-shrink>

<flex-basis>

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๋„ˆ๋น„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Š˜์ผ์ง€ ์ˆซ์ž๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๋„ˆ๋น„๋ฅผ ์–ผ๋งˆ๋‚˜ ์ค„์ผ์ง€ ์ˆซ์ž๋กœ ์ง€์ •ํ•œ๋‹ค.

ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. width ์†์„ฑ์ฒ˜๋Ÿผ ๋„ˆ๋น„ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ  0์ด๋‚˜ auto๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 0์ผ ๊ฒฝ์šฐ flex-grow์™€ flex-shrink์˜ ์ธ์ˆ˜ ๊ฐ’์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  auto์ผ ๊ฒฝ์šฐ, ํ”Œ๋ ‰์Šค ํ•ญ๋ชฉ์˜ ๋„ˆ๋น„ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

initial

ํ•ญ๋ชฉ์˜ width/height ๊ฐ’์— ์˜ํ•ด ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๋Š”๋ฐ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๊ฒฝ์šฐ, ์ตœ์†Œ ํฌ๊ธฐ๊นŒ์ง€ ์ค„์ธ๋‹ค.

auto

ํ•ญ๋ชฉ์˜ width/height ๊ฐ’์— ์˜ํ•ด ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜์ง€๋งŒ ํ”Œ๋ ‰์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณต๊ฐ„์— ๋”ฐ๋ผ ๋Š˜์ด๊ฑฐ๋‚˜ ์ค„์ธ๋‹ค.

โ€‹

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€