CSS-flex box

์ถค์ถ”๋Š” ๋ณ‘๋”ฐ๊ฐœยท2022๋…„ 12์›” 8์ผ
0

๐Ÿ“š HTML&CSS, JAVAscript ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
4/23
post-thumbnail

์ฐธ๊ณ  ์ž๋ฃŒ

display์˜ ํ”„๋กœํผํ‹ฐ 3๊ฐ€์ง€

display : block;
display : inline-block;
display : inline;
  • block ์—˜๋ฆฌ๋จผํŠธ๋Š” ์ขŒ/์šฐ,์–‘์˜†์œผ๋กœ ๋‹ค๋ฅธ ์—˜๋ฆฌ๋จผํŠธ ๋ฐฐ์น˜๊ฐ€ ์•ˆ ๋จ!

    ex) โ—ผ๏ธŽ         ............ ๋‹ค๋ฅธ ์š”์†Œ ์œ„์น˜ ๋ถˆ๊ฐ€๋Šฅ ............
    	 โ—ผ๏ธŽ         ............ ํ•œ ์ค„์— ํ•œ ๊ฐœ๋งŒ ............
    	 โ—ผ๏ธŽ         ........... ๋‹ค๋ฅธ ์š”์†Œ ์œ„์น˜ ๋ถˆ๊ฐ€๋Šฅ .............
  • inline์€ ์œ ๋™์ ์ธ ์—˜๋ฆฌ๋จผํŠธ๋กœ height,width๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ!

    	ex) text
  • inline-block์€ ์œ„ ๋‘ ์†์„ฑ์˜ ํ˜ผํ•ฉํ•œ, ๋ธ”๋ก ์†์„ฑ์„ ๊ฐ€์ง„ inline์ด๋‹ค. height๊ณผ width ์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ!

    	ex) โ—ผ๏ธŽโ—ผ๏ธŽโ—ผ๏ธŽ

flex, flex box

display : flex;

inline-block๋Š” ์š”์†Œ๋“ค ์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๊ฑฐ๋‚˜ ๋ฐ˜์‘ํ˜• ์›น์— ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉ๋˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. ์ด ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด flex ๋˜๋Š” flexbox๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

.wrapper{
    display: flex;
}
.box{
    width: 200px;
    height: 200px;
    background: peru;
    color : white
}
<body>
    <div class="wrapper">
        <div class="box">1</div>
        <div class="box">2</div>
        <div class="box">3</div>
     </div>
</body>
    
box์š”์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ, ์š”์†Œ๋“ค์˜ ์ง์† ์ƒ์œ„ ๊ณ„์ธต์˜ ์†์„ฑ์ด flex container์—ฌ์•ผ ํ•œ๋‹ค! 
์ด ๋ง์€ ์ฆ‰, flex ์†์„ฑ์„ ๊ฐ€์ง„ ํƒœ๊ทธ ๋ฐ”๋กœ ์•„๋ž˜์˜ ํƒœ๊ทธ๋“ค๋งŒ ์ ์šฉ๋œ๋‹ค๋Š” ๋ง!

Flex-box

โ–ฒ ํ”Œ๋ ‰์Šค ๋ฐ•์Šค์˜ ๊ตฌ์„ฑ
โ–ฒ (ํ”Œ๋ ‰์Šค)๋ฐ•์Šค๋ฅผ ๊พธ๋ฉฐ์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๊ฐ’

โ–ฒ ์•„์ดํ…œ์„ ์ง€์ •ํ•˜๋Š” ์†์„ฑ๊ฐ’


Flex-box์˜ ๋ฐฉํ–ฅ์€ main axis(ใ…ก)์™€ cross axis(ใ…ฃ)๊ฐ€ ์žˆ๋‹ค.
Flex-direction์ด row์ด๋ฉด ๋ฉ”์ธ์ถ•์€ ๊ฐ€๋กœ, ํฌ๋กœ์Šค๋Š” ์„ธ๋กœ. ๋ฐ˜๋Œ€๋กœ Column์ด๋ฉด ๋ฉ”์ธ์ถ•์€ ์„ธ๋กœ, ํฌ๋กœ์Šค๋Š” ๊ฐ€๋กœ!!

(์•„๋ž˜๋Š” row์ผ๋•Œ์˜ ์ถ•์˜ ๋ชจ์Šต. column์€ row๋ฅผ 90๋„ ํšŒ์ „ํ•œ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.)


๋ฐ•์Šค ์†์„ฑ๊ฐ’

Justify content์™€ align-items

Justify content๋Š” ๋ฉ”์ธ์ถ•์„ ๋‹ด๋‹น. Align-items๋Š” ํฌ๋กœ์Šค์ถ•์„ ๋‹ด๋‹นํ•œ๋‹ค.

  • justify-content
  • align-itmes / align-content
  • โ–ฒ contents(์ปจํ…์ธ )๋Š” ์†์„ฑ๊ฐ’ ์ง€์ • ๋ฐฉ์‹์ด ๋™์ผ

Justify content โ†”๏ธ

align-contents์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ๋ฒ• ์‚ฌ์šฉ

align-items โ†•๏ธ

์ฐธ๊ณ  ์ž๋ฃŒ : zoey-coding


๋ฐ•์Šค ์†์„ฑ๊ฐ’

align-content์™€ align-items

Align content์™€ Align-items๋Š” ํฌ๋กœ์Šค์ถ•์„ ๋‹ด๋‹นํ•œ๋‹ค!

align content
flex line์„ ์ •๋ ฌํ•œ๋‹ค.
flex-wrap:wrap; ์˜ ์ƒํƒœ์ผ ๋•Œ items๊ฐ„์— line์˜ ํ–‰๊ฐ„์„ ์กฐ์ •ํ•œ๋‹ค.

align-items
flex line์„ ๊ธฐ์ค€์œผ๋กœ ์•„์ดํ…œ์„ ์ •๋ ฌํ•œ๋‹ค.
align-items๋Š” ํ•œ ์ค„์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐ˜๋ฉด, align-content๋Š” ๋‘ ์ค„๋ถ€ํ„ฐ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.


๋ฐ•์Šค ์†์„ฑ๊ฐ’

flex-warp๊ณผ flex-flow

์•„๋ž˜๋Š” flex-box์™€ ์•„์ดํ…œ์„ ์ด์šฉํ•œ ์ฝ”๋“œ์ด๋‹ค.

# 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>
</body>
</html>


# CSS
.container {
  background: beige;
  height: 100vh;
  display: flex;  
  
 <flex-flow> 
  flex-direction: row; --1.
  flex-wrap: nowrap;   --2. 
  /*1๋ฒˆ 2๋ฒˆ์„ ํ•ฉ์ณ flex-flow๋กœ ํ•œ ์ค„์— ์ž‘์„ฑ ๊ฐ€๋Šฅ/
 
 <์•„์ดํ…œ ๋ฐฐ์น˜>
  justify-content: space-between; /*main*/
  align-items: baseline;
  align-content: center;
}

row; ๊ฐ€๋กœ / column; ์„ธ๋กœ
wrap; ํ•œ ์ค„์ด ์ฐจ๋ฉด ๋‹ค์Œ ์ค„๋กœ ๋‚ด๋ ค๊ฐ / nowrap; ํ•œ ์ค„์— โ–ฒ nowarp

ex) flex-flow: row nowrap; 

์•„์ดํ…œ ์†์„ฑ๊ฐ’

grow, shrink, basis

flex-grow: 0;

ํ™”๋ฉด ๊ฐ€๋กœ ์˜์—ญ์— ๊ฐ€๋“์ฐฌ ์ƒํƒœ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋น„์œจ์„ ์กฐ์ ˆ

ex) 1๋ฒˆ ์•„์ดํ…œ ์†์„ฑ๊ฐ’์ด flex-grow: 1;๊ฒฝ์šฐ!
  <div class="container">
    <div class="item item1">1</div>
    <div class="item item2">2</div>
    <div class="item item3">3</div>
  </div>
  
 .item 1 { flex-grow: 1;} ๊ฒฝ์šฐ!
  ํ™”๋ฉด ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ๊ฐ€๋“ ์ฑ„์šฐ๊ณ  ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์€ item2์™€ item3์€ ๋ณธ๋ž˜์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์œ ์ง€

flex-shrink: 0;

ํ™”๋ฉด ๊ฐ€๋กœ ์˜์—ญ์—์„œ (ํ™”๋ฉด์ด ์ค„์–ด๋“ฆ์— ๋”ฐ๋ผ)์ค„์–ด๋“œ๋Š” ๋น„์œจ์„ ์กฐ์ •

ex) 1๋ฒˆ ์•„์ดํ…œ ์†์„ฑ๊ฐ’์ด flex-grow: 1;๊ฒฝ์šฐ!
  <div class="container">
    <div class="item item1">1</div>
    <div class="item item2">2</div>
    <div class="item item3">3</div>
  </div>
  
 .item 1 { flex-shrink: 2;} 
 .item 2 { flex-shrink: 1;} 
 .item 3 { flex-shrink: 1;} ๊ฒฝ์šฐ!
  ํ™”๋ฉด ๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ ์ค„์–ด๋“ค๋•Œ ๋น„์œจ์ด item1์ด 2๋งŒํผ, item2์™€ item3์€ 1๋งŒํผ์˜ ๋น„์œจ๋กœ ์‚ฌ์ด์ฆˆ ์ถ•์†Œ

flex-basis: %;

ํ™”๋ฉด ๊ฐ€๋กœ ์˜์—ญ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์„ ํผ์„ผํŠธ๋กœ ์กฐ์ •

ex) 1๋ฒˆ ์•„์ดํ…œ ์†์„ฑ๊ฐ’์ด flex-grow: 1;๊ฒฝ์šฐ!
  <div class="container">
    <div class="item item1">1</div>
    <div class="item item2">2</div>
    <div class="item item3">3</div>
  </div>
  
 .item 1 { flex-shrink: 60%;} 
 .item 2 { flex-shrink: 30&;} 
 .item 3 { flex-shrink: 10%;} ๊ฒฝ์šฐ!
  ํ™”๋ฉด ๊ฐ€๋กœ ์˜์—ญ์„ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์ด ๋œ๋‹ค.


์•„์ดํ…œ ์†์„ฑ๊ฐ’

align-self

align-self๋Š” ๋ฐ•์Šค ์†์„ฑ๊ฐ’์œผ๋กœ (align-content, align-items) ์•„์ดํ…œ๋“ค์˜ ์œ„์น˜๋ฅผ ๊ณจ๊ณ ๋ฃจ ์„ธํŒ…ํ•œ ํ›„ ํ•œ ์•„์ดํ…œ๋งŒ ๋”ฐ๋กœ ์›€์ง์ด๊ณ  ์‹ถ๋‹ค๋ฉด align-self๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


order

html์—์„œ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ, order ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•ด ์š”์†Œ์˜ ๋ฐฐ์น˜์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค!
Default๋Š” 0์œผ๋กœ ์˜ค๋ฅด์ฐจ์ˆœ์„ ํ†ตํ•ด ํฐ ์ˆ˜ ์ผ์ˆ˜๋ก ๋’ค์ชฝ์œผ๋กœ ๋ฐฐ์น˜๋จ

.child:nth-child(2) {
    order: 1;
}
//html
 <div class="child">1</div>
 <div class="child">2</div>
 <div class="child">3</div>

Flexbox Froggy ๊ฒŒ์ž„: https://flexboxfroggy.com/

๐Ÿ”— Resources:
Material Design Color Tool:
https://material.io/resources/color/#...
CSS Tricks for Flexbox:
https://css-tricks.com/snippets/css/a...
MDN Float:
https://developer.mozilla.org/en-US/d...
MDN Flexbox:
https://developer.mozilla.org/en-US/d...

profile
FE ๊ฐœ๋ฐœ ๊ณต๋ถ€ ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€