Float

- flex์ ๋ฑ์ฅ์ผ๋ก ์์ง, ์ํ ๋ ์ด์์์ ๋ด๋นํ๋ ์ญํ ์ด ์ฝํด์ง.
- ๋ค๋ง ๊ธฐ์กด์ ์๋ ์ํ ์ ๋ ฌ ๋ ์ด์์ ์ฝ๋๋ฅผ ์์ ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ผ ํ ํ์๊ฐ ์์.
float์ ์ด์ฉํ ์ํ ์ ๋ ฌ
clear
์์ฑ์ ์ด์ฉํด float์ ํด์ ์์ผ์ผ ํจ


- ๋จ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ์ง ์์ ์์(4)๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ง๋ค์ด์คฌ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐฉ๋ฒ์ ์ข์ง ์์.
- container CSS์
overflow: hidden
์ ์ฌ์ฉํ๋ฉด float ์์ฑ์ด ์ ์์ ์ผ๋ก ํด์ ๋จ์ ๋ณผ ์ ์์.
- ๋ค๋ง
overflow: hidden
์์ฑ์ float๊ณผ ์ด๋ ํ ๊ด๊ณ๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ์๋์น ์๊ฒ container ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋จ.
/*ํด๊ฒฐ๋ฒ - ๋ณ๋์ clear CSS๋ฅผ ๋ง๋ค์ด container์ class๋ก ์ถ๊ฐํจ.*/ .clearfix::after { content: ""; display: block; clear: both; }

float์ ์ฌ์ฉํ container ๋ด๋ถ์ float๋ฅผ ์ฌ์ฉํ ์์๋ค๋ง ๋ค์ด์์ด์ผ ํจ.
float ์์ฑ์ด ์๋ 4๋ ๋
๋ฆฝ์ ์ผ๋ก ๋ ์ด์์์ด ์์ฑ๋จ.

/*ํด๊ฒฐ๋ฒ - ์น์ ์ ๋๋.*/ <div class="container"> <div class="clearfix"> <div class="item float">1</div> <div class="item float">2</div> <div class="item float">3</div> </div> <div class="item four">4</div> </div
left, right ์ค์ต
<div class="container clearfix"> <div class="item float--left">1</div> <div class="item float--left">2</div> /*3๋ค์ 4๊ฐ ๋์ค๊ธฐ ์ํจ.*/ <div class="float--right clearfix"> <div class="item float--left">3</div> <div class="item float--left">4</div> </div> </div>

์ถ๊ฐ ์ ๋ณด
- float ์ฌ์ฉ์ display ๊ฐ์ด block์ผ๋ก ๋ณ๊ฒฝ๋จ โ inline์ผ๋ก ๋ณ๊ฒฝํ ์ ์์.
- float์ด ์์ด๋ grid ๋๋ flex๊ฐ์ด ์๋ค๋ฉด block์ผ๋ก ๋ฐ๋์ง ์์.
Position
absolute
๋ ์กฐ์ ์์ ์ค position ๊ฐ์ ๊ฐ์ง ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ง์ด๊ฒ ๋ง๋ฆ. ๋ง์ฝ ์๋ค๋ฉด ๋ทฐํฌํธ ๊ธฐ์ค์ผ๋ก ์์นํจ.
fixed
์ ๊ฒฝ์ฐ ์์์ ์กฐ์ ์ค ํ๋๊ฐtransform
,perspective
,filter
์ ๊ฐ์ ๊ฐ์ง๋ค๋ฉด ๋ทฐํฌํธ ๋์ ๊ทธ ์กฐ์์ ์ปจํ ์ด๋ ๋ธ๋ก์ผ๋ก ์ผ์ โ ํด๋น ์์ฑ๋ค์ด ์์น์ ์ํฅ์ ์ค ์ ์์์ ๊ธฐ์ตํ๊ธฐ.
/*display๋ก inline ๊ฐ์ด ์ง์ ๋์ง๋ง absolute๋ก ์ธํด block ์ฒ๋ฆฌ๋จ. fixed ๋ง์ฐฌ๊ฐ์ง.*/ .item { display: inline; position: absolute; }


์์ ๋งฅ๋ฝ(Stacking Context)
- ์์๊ฐ ์์ด๋ ์์๋ฅผ ๊ฒฐ์ ํจ. ๊ฐ์์ Z์ถ์ ์ฌ์ฉํ HTML ์์์ 3์ฐจ์ ๊ฐ๋ ํ.
- ๋ณ๋์ ์์ฑ ์ง์ ์์ด 3๊ฐ์ ์์๋ฅผ ๋๋ํ ๋ฐฐ์นํ์ ๋, ๊ฐ์ด๋ฐ์ ์๋ ์์์ ํฌ๊ธฐ๋ฅผ
transform
์ผ๋ก 1.5๋ฐฐ ํฌ๊ฒ ํ์ ๋ ๋ค๋ฅธ ์์๋ฅผ ๊ฐ๋ฆฌ๋ ๋ฐ๋ฉด, ๋๋จธ์ง ์์์opacity
๋ฅผ ์ง์ ํ๋ฉด ๋ณด์ด์ง ์์๋ ๋ถ๋ถ์ด ๋ณด์ด๋ ๊ฒ์ ๋ณผ ์ ์์.
z-index
๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ์์๋ฅผ ์์ ์ ์๋ ๊ฒ์.
z-index
๋ static์ ์ ์ธํ ๋๋จธ์ง position ์์ฑ์ด ์์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํจ. ๊ธฐ๋ณธ๊ฐ์ auto์.
z-index
๋ flex์ grid์์๋ ์ฌ์ฉํ ์ ์์.
Flex
- 1์ฐจ์(์ํ, ์์ง) ๋ ์ด์์ ๊ตฌ์กฐ ์์ ์ ์ฌ์ฉํจ.
- flex container(๋ถ๋ชจ) flex item(์์)๋ก ๊ตฌ์ฑ๋จ.
Flex container ์์ฑ
inline-flex
๋ inline๊ณผ ์ ์ฌํ ํน์ฑ์ ๊ฐ์ง โ ์ฝํ ์ธ ํฌ๊ธฐ๋งํผ ๋ฒ์๊ฐ ์ค์ด๋ฌ.
- ๋ค๋ง inline์ ๊ธ์๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ ์์ฑ์ด๊ธฐ ๋๋ฌธ์ ๋์ด์ฐ๊ธฐ ๋ฑ์ ์ํฅ์ ๋ฐ์. ์ฌ๋งํ๋ฉด block ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์.


flex-direction
์ผ๋ก ์ฃผ์ถ๊ณผ ๊ต์ฐจ์ถ์ ๊ฒฐ์ ํ ์ ์์.
flex-start
,flex-end
๋ ์๋์ ์ผ๋ก ๋ฐ๋ ์ ์์. container์ ๋๋ถ๋ถ์ด flex๊ฐ ๋๋๋ ์ง์ ์.
flex-warp
์ ์์์ ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ๋ฅผ ์ง์ ํจ. ๊ธฐ๋ณธ๊ฐ์nowrap
์ผ๋ก ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์. ๋ง์ฝ ์ค๋ฐ๊ฟ์ ํฌ๋งํ๋ค๋ฉดwarp
์ ์ถ๊ฐํ ์ ์์.wrap-reverse
๋ก ๋ฐ๋๋ฐฉํฅ์ผ๋ก ์ค๋ฐ๊ฟํ ์ ์์.


justify-content
,align-items
๋ก ์ถ ์ ๋ ฌ์ ํ ์ ์์.
align-items
์ ๊ฒฝ์ฐ height ์ง์ ์ด ์๋ค๋ฉดstretch
๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ฐ์ง.

wrap์ผ๋ก ์ง์ ํ ์์ฑ์ ๊ณต๋ฐฑ์ด ์๊ธฐ๋ ์ด์ ?
โ align-items์ stretch ์์ฑ์ด ๊ธฐ๋ณธ์ผ๋ก ๋ค์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ฐํ์ ๋ฐ์ ๋ก ๋๋ ์ํ์์ stretch ์์ฑ์ด ์ ์ฉ๋ ๊ฒ์. ๋ฐ๋ผ์ 
align-content ์ ์ฉ ์ 
align-content ์ ์ฉ ํ
align-content
์ flex-start
๋ฑ์ ์์ฑ์ ๋ฃ์ผ๋ฉด ํด๊ฒฐ๋จ. align-items๋ 1์ค, align-content๋ 2์ค์ ๋ด๋นํจ.

Flex Items ์์ฑ
flex-grow
: ์ฆ๊ฐ ๋๋น ๋น์จ์ ์ค์ ํจ. ๊ธฐ๋ณธ๊ฐ์ 0. ๋ง์ฝ ์ซ์๋ฅผ ์ค๋ค๋ฉด ํด๋น ๊ฐ๋งํผ ๋น์จ์ ๋ง๋ฆ. ex) 1์ ์ค์ ํ๋ฉด 1:1:1์ ๋น์จ๋ก item์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํจ. ๋ง์ฝ nth-child๋ก ํน์ ์ ํ์๋ง ์ฆ๊ฐ๋๋น๋ฅผ ์ง์ ํ๋ค๋ฉด 1:2:1 ๋ฑ ์์ ๋กญ๊ฒ ์ค์ ํ ์ ์์. ์ด๋, item์ด ๊ฐ์ง ํฌ๊ธฐ๋ฅผ ์ ์ธํ ๋น์จ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ item ์ ์ฒด ํฌ๊ธฐ๊ฐ ๊ท ๋ฑํ ๋น์จ์ ์๋. ๊ท ๋ฑํ๊ธธ ์ํ๋ฉด item์ width๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋จ. auto๊ฐ default.

์ถ๊ฐ๋ก ํ๋์ item์๋ง flex-grow์ 1์ด์์ ๊ฐ์ผ๋ก ์ง์ ํ๋ฉด ํ๋ฉด ๋น์จ์ด ๋ณํ ๋ flex-grow๋ฅผ ์ง์ ํ ์์๋ง ๊ฐ๋ณ์ ์ผ๋ก ๋ณํ ์ ์์.
flex-shrink
: ๊ฐ์ ๋๋น ๋น์จ์ ์ค์ ํจ. ๊ธฐ๋ณธ๊ฐ์ 1์ด์ง๋ง 0์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ item์ด container์ ๋๋น๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ ์ค์ง ์๊ณ ์์ ์ ํฌ๊ธฐ๋ฅผ ์ ์งํจ. ์ซ์๊ฐ ํฌ๋ฉด ํด์๋ก ๋ ๋ง์ด ๊ฐ์ํจ.

flex-basis
: ์์์ ๊ธฐ๋ณธ ๋๋น๋ฅผ ์ค์ ํจ. ๊ธฐ๋ณธ๊ฐ์ auto. auto์ผ ๊ฒฝ์ฐ ํด๋น ์ค์ฝํ ๋ด์ ์ง์ ํ width, height ๊ฐ๋๋ก ์ถ๋ ฅํจ. ๋ง์ฝ px๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ณ๋๋ก ์ค์ ํ width ๊ฐ์ ์ฌ์ฉํ์ง ๋ชปํจ.
flex
๋ผ๋ ๋จ์ถ์์ฑ์ผ๋ก ์ฌ์ฉํ ์ ์์. ์ฃผ์ํ ์ ์ ์ง์ ํ์ง ์์ ๊ณณ์ ๊ธฐ๋ณธ ๊ฐ์ ๋ช ์ํด์ฃผ์ด์ผ ์์ํ๋๋ก ํ๋ฉด์ ๊ทธ๋ ค์ง. basis๋ ์๋ต์ ๊ธฐ๋ณธ๊ฐ์ธ auto๊ฐ ์๋ 0์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ.
/* flex: grow shrink basis */ /* default: 0 1 auto */ .container .item { flex: 1, 1, 0; }
order
: flex item์ ์์๋ฅผ ์ง์ ํจ. ๊ธฐ๋ณธ๊ฐ์ 0. ์ซ์๊ฐ ๋์ด๋๋ฉด ์์๊ฐ ๋ฐ๋ฆผ. ์์ ์ฌ์ฉ ๊ฐ๋ฅ.

align-self
: item์ ๊ต์ฐจ์ถ ์ ๋ ฌ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์. ๊ธฐ๋ณธ ๊ฐ auto. ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ํํด flex-start๋ฅผ ์ง์ ํ๋ฉด ์ฒซ ๋ฒ์งธ ์์๋ง ํด๋น ์์ฑ์ด ์ ์ฉ๋จ.

gap
: item ๊ฐ์ ์ฌ๋ฐฑ์ ๋ง๋ฆ. ๋ค๋ง ์ต์ ๊ธฐ๋ฅ์ด๋ผ ๋์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ์ ์์(ํ์ํธํ์ฑx).
Grid
- 2์ฐจ์ ๋ ์ด์์ ๊ตฌ์กฐ ์์ ์ ์ฌ์ฉํจ.
inline-grid
๋ container ๋ด๋ถ์ ํน์ฑ์ grid์ด์ง๋ง container ์์ฒด๋ inline์ ํน์ฑ์ ๊ฐ์ง.
fr
์ fraction์ ์ฝ์ด๋ก ๊ณต๊ฐ ๋๋น ๋น์จ์ ์๋ฏธํจ. ๋ค๋ง container์ ๋๋น๊ฐ ์ ์๋์ด์ผ ํจ.
Grid container ์์ฑ
grid-template-rows
,grid-template-columns
๋ก ํ์ด์ ๋ช px์ฉ ์ผ๋ง๋ ๋๋์ง ๊ฒฐ์ ํจ.repeat
์ ํตํด ๊ฐํธํ๊ฒ ํํํ ์ ์์(๋ช ์์ ) โrepeat(8, 1fr)
grid-auto-rows
,grid-auto-columns
๋ ์์์ ์ผ๋ก ๋ฒ์๊ฐ ๋ฒ์ด๋ ์์์ ํ์ด ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ค ์ ์์.
grid-auto-flow
dense
: item์ด ์ ๋ ฌ๋ ๋ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๋ฉด์ ์ ๋ ฌ๋จ.row(default)
orcolumn
: ์ถ ๋ฐฉํฅ์ ๋ฐ๊ฟ ์ง๊ทธ์ฌ๊ทธ๋ก ์์๊ฐ ์์ด๊ฒ ํจ.- row ๋๋ column๊ณผ ๋์์ ๋์ด์ฐ๊ธฐ๋ก dense๋ฅผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์.
- ๋ง๋ ํ์ด์ ๋ ์ด์์์ ์ปค์คํ ํ ์ ์์.
grid-column
,grid-row
: ๋ผ์ธ์ ํ์ฅํจ. ๊ธฐ๋ณธ๊ฐ์ 1. ์ ๋ ฅํ ์ซ์๋งํผ์ ๋ผ์ธ์ ํ์ฅํจ.
.container { grid-column: span 3; }

justify-content
,align-content
๋ก ์ ๋ ฌ์ ๋ง๋ค ์ ์์. ๋น ๊ณต๊ฐ์ด ์์ด์ผ ์ ์ฉ๋จ.
justify-items
,align-items
๋ก ์ ๋ด๋ถ์ ์์ดํ ํ์ถ์ ์ ๋ ฌํ ์ ์์.
grid-template-areas
: ํ์ด์ ์ ์ดํจ. ์ ์ด๋ฅผ ์ํดgrid-area
๋ฅผ ํตํด ์ด๋ฆ์ ์ง์ ํด์ฃผ์ด์ผ ํจ. ์ด๋ ๋๋๋ ๊ธฐ์ค์grid-template-rows
,grid-template-columns
์ ์ํด ๊ฒฐ์ ๋จ.
.container { border: 4px solid; display: grid; grid-template-rows: repeat(4, 100px); grid-template-columns: repeat(3, 1fr); grid-template-areas: "header header header" "main main aside" ". . aside" "footer footer footer"; } .container > * { border: 2px solid; } .container header {grid-area: header;} .container main {grid-area: main;} .container aside {grid-area: aside;} .container footer {grid-area: footer;}

grid-gap
์ผ๋ก ๊ฐ ์์ญ์ ๊ฐ๊ฒฉ์ ์ค ์ ์์. ๋ ๊ฐ๋ฅผ ์์ฑํ๋ฉด ํ๊ณผ ์ด์ ๋ณ๋๋ก ์ง์ ํ ์ ์์. ์ด๋grid-row-gap
๊ณผgrid-column-gap
๊ฐ๋ณ์ ์ผ๋ก ๋ํ๋ผ ์ ์์.
gap
, row-gap
, column-gap
์ ํ์ํธํ์ฑ์ ๊ณ ๋ คํด์ ์์ฑํด์ผ ํจ.Grid Items ์์ฑ
grid-row-start
: ๊ฐ ํ ๋ผ์ธ ๋ฒํธ ์ค ๋ช ๋ฒ์์ ์์ํ ๊ฒ์ธ์ง๋ฅผ ์ ์ํจ.grid-row-end
์ผ๋ก ๋์ ์ ์ง์ ํ๋ฉด ์ด๋์ ๋๋ผ์ง๋ฅผ ์ ์ํ ์ ์์.grid-column-start
,grid-column-end
๋ ์์. ๋จ์ ์ซ์๋ฟ๋ง ์๋๋ผspan 2
๋ฑ ํ์ฅ์ด๋ ์๋ฏธ๋ฅผ ๊ฐ์ง span๊ณผ ํจ๊ป ํ์ฅํ ๊ฐ์๋ฅผ ์ง์ ํ ์ ์์. ์ด๋ฅผgrid-row
,grid-column
์ผ๋ก ์ถ์ฝํ ์ ์์. start์ end๋ ์ฌ๋์(/)๋ก ๊ตฌ๋ณํจ.
justify-self
,align-self
: ๊ฐ๋ณ์ ์ธ item์ ์ ๋ ฌ์ ํ ์ ์์. ์ด๋ ์ ํ์๋ก๋ ๊ฐ๋ณ์ ์ผ๋ก ์์ง์ด๊ณ ์ถ์ item์ ์ง์ ํด์ผ ํจ.
order
: flex์ ๋ง์ฐฌ๊ฐ์ง๋ก 0์ผ๋ก ์ถ๋ฐํด์ ์ซ์๊ฐ ์์์๋ก ์์ ์ ๋ ฌ๋จ(์์ ๊ฐ๋ฅ). ์ด๋ ์ ํ์๋ก order๋ฅผ ์ ์ฉํ๊ณ ์ถ์ item์ ์ง์ ํด์ผ ํจ.
Grid Functions - container
grid-template-rows
,grid-template-columns
,grid-auto-rows
,grid-auto-columns
์ ์ฌ์ฉํ ์ ์์.
repeat(ํ์, ๋๋น)
: ๋ช ๋ฒ ๋ฐ๋ณตํ ์ง. ์ฒซ ๋ฒ์งธ ์ธ์์๋ ๋ฐ๋ณต ํ์๋ฅผ, ๋ ๋ฒ์งธ ์ธ์์๋ ๋๋น๋ฅผ ์ง์ ํจ.
minmax(์ต์, ์ต๋)
: ์ต์(์ฒซ ๋ฒ์งธ ์ธ์)์ ์ต๋(๋ ๋ฒ์งธ ์ธ์) ๊ธธ์ด๋ฅผ ์ง์ ํจ. ์ด๋ฅผ ์ด๊ณผํ๋ฉด grid ํํ๊ฐ ๊นจ์ง. repeat์ ๋ ๋ฒ์งธ ์ธ์๋ก ์ถ๊ฐํ๋ ๋จ์๋ก ์ฌ์ฉํจ.
fit-content(์ ํ๋๋น)
: grid item์ด ๊ฐ์ง content์ ํฌ๊ธฐ๋งํผ ๋ง์ถฐ์ค. ์ธ์๋ก ์ง์ ํ px๊ฐ๋งํผ ์ต๋๊ฐ์ ๊ฐ์ง. ๋ฌดํ์ ๋์ด๋๋ ๊ฑด ์๋.
Grid ๋จ์
fr
: ์ฌ์ฉ๊ฐ๋ฅํ ๊ณต๊ฐ ๋๋น ๋น์จ.
min-content
: ์ฝํ ์ธ ๊ฐ ๊ฐ์ง ์ ์๋ ์ต์ ๋๋น๊น์ง ์ค์ฌ์ ํํํจ. ๋ฐ๋๋max-content
.
word-beak: keep-all;
๋ก ์ง์ ํ๋ฉด ํ๊ธ๋ ๋์ด์ฐ๊ธฐ ๋จ์๋ก ํํํ ์ ์์.
auto-fill
,auto-fit
: ๋ช ์์ ์ผ๋ก ํ์ด์ ์ง์ ํ์ง ์๊ณ ํ๋ฉด์ ๋ง๋ ์ต์ ํ๋ ๊ฐ์๋ฅผ ์๋์ผ๋ก ์ง์ ํด์ค ์ ์์. repeat์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ถ๊ฐํ๋ ๋จ์๋ก ์ฌ์ฉํจ.
์์ํ ํ
- border ์์ฑ์ color๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธ์์์ ๋ฐ๋ฆ.
.container>.item{$}*3
์ ์๋ฐ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด container๋ผ๋ class๋ฅผ ๊ฐ์ง ๋ถ๋ชจ์ ์์์ผ๋ก item์ด๋ class๋ฅผ ๊ฐ์ง 3๊ฐ์ div ํ๊ทธ๊ฐ ๊ฐ์์ ์์๋ฅผ ๊ฐ์ง ์ํ๋ก ์ฝ๋๊ฐ ์์ฑ๋จ.
- ์ ์ญ์์ ์ฌ์ฉํ๋ CSS๋ ์๋จ์ ๋ฐฐ์นํ๊ธฐ.
.container > * {}
๋ฅผ ์ฌ์ฉํ๋ฉด container class์ ๋ชจ๋ ์์์ ์ง์นญํจ.