[๋ฉ์ฌ๐ฆ] 2์ฃผ์ฐจ(์) CSS flex/grid, ์คํ๋ฆฐํธ ํ๊ณ
๋ฉ์์ด ์ฌ์์ฒ๋ผ๐ฆ ํ๋ก ํธ์๋ ์ค์ฟจ 1๊ธฐ 2์ฃผ์ฐจ(์) ํ๊ณ - November 8, 2021.
[ ๊ณต๋ถ ]
์ค์ ์ ํ์ฌํ ๊ฐ์ฌ๋๊ป์ ์ด์ ์ ์ด์ด CSS flex
์ค๋ช
์ ํด์ฃผ์
จ๊ณ , grid
์์ฑ์ผ๋ก ๋์ด๊ฐ๋ค. grid
๋ ๋ด๊ฐ ์ฒ์ ์ ํ๋ ๊ฐ๋
์ด์ด์ ์ ๋ฒ ๊ธด์ฅํ๊ณ ๋ค์๋๋ฐ, ๋ง์ง๋ง ์ด๋ฏธ์ง ๋ฐฐ์น ์ค์ต์ด ์ฌ๋ฐ์๋ค. ๊ทธ๋๋ ๋ฐ๋ก๋ฐ๋ก ์์ฉํด์ ์จ๋จน์ผ๋ ค๋ฉด ๋ง์ ์ฐ์ต์ด ํ์ํ ๊ฒ ๊ฐ๋ค ๐
ํ๋ ์ค ๊ฐ๊ตฌ๋ฆฌ ๊ฐ์ ๊ทธ๋ฆฌ๋ ์ฐ์ต๋ ์์ผ๋ ๋งค์ผ ์ฐ์ตํด์ ์ต์ํด์ ธ์ผ๊ฒ ๋ค. ๐ฑ Grid Garden
์คํ์ ์ดํธ์ค ๊ฐ์ฌ๋๊ป ์ค์ต ์์ฃผ์ ์์
๊ณผ ํผ๊ฐ ๋๊ณ ์ด์ด ๋๋ ์กฐ์ธ๋ค์ ๋ง์ด ๋ค์๋ค.
์ ๋๋ฉ์ด์
์ค์ต์ด ๋๋ฌด ์ ๊ธฐํ๋๋ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ ํฌ์ธํธ๋ฅผ ์๋์ ์ ๋ฆฌํด๋ณด์๋ค.
[ ๊ฐ์์์ฝ ]
- 1์ฐจ์ ๋ ์ด์์์
flex
, 2์ฐจ์ ๋ ์ด์์์grid
! flex
์grid
๋ container์ item๋ค์ด ํ์ํ๋ค.- ์ปจํ
์ด๋์ ์์ดํ
๋ค์ด ์๋ ์ํฉ์์๋
float
์ ์จ์ ๊ฐ๋จํ๊ฒ ๊ตฌํ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. flex
์float
๋ฅผ ๋ ๋ค ์ธ ์ ์๋ ์ํฉ์ด๋ฉดflex
๊ฐ ํจ์ฌ ๊ฐํธํ๋ค.
flex
align-items
์ ๊ธฐ๋ณธ ๊ฐ์stretch
.flex
๋ฐ์ค์ cross axis ๊ธธ์ด๋งํผ ์ญ ๋์ด๋๋ค.align-items
- ์ฌ๋ฌ ์ค์ผ ๋ ๊ฐ๊ฒฉ์ ์ ์งํ๊ณ ์ค๋ฐ๊ฟ ์ ๋ ฌํ๊ณ ,
align-content
- ์ฌ๋ฌ ์ค์ผ ๋ ๊ฐ๊ฒฉ์ ๋ฌด์ํ๊ณ ์ค๋ฐ๊ฟ ์ ๋ ฌํ๋ค.flex-wrap
์ ์์ ์์๋ฅผ ๊ฐ์ธ์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ค.
์์์ ํฌ๊ธฐ๊ฐ ์์ ๋ณด๋ค ํฌ๋ค๊ณ ํด์ ๊ฐ์ ๋ก ์กฐ์ ํ์ง๋ ์๋๋ค.
flex-basis
๋ ์์ ์์์ ์ฃผ๋ ์์ฑ์ด๋ค. main axis์ ๋ฐฉํฅ์ผ๋ก ์์์ ๋์ด๋ฅผ ์ ํ๋ค.flex-grow
์flex-shirink
๋ ์๋ก ๋ฐ๋ ๊ฐ๋ ์ธ๋ฐ, basis๋ณด๋ค ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฒ ํน์ ์์์ง๊ฒ ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. 0,1,2 ๋ฑ์ ๊ฐ์ผ๋ก ๋ฐ๋๋ค./* flex: flex-grow, flex-shrink, flex-basis */
(์กฐ๊ธ ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ค ๐ )
(+ https://velog.io/@ddooyn/๋ฉ์ฌ-3์ฃผ์ฐจ-์ ์์ flex ๋ด์ฉ ๋ณด์ถฉํจ)
- ์ด์ flexbox defense๋ฅผ ์งํํ๋ฉฐ ๊ถ๊ธํ๋
align-self
์์ฑ๊ณผorder
์์ฑ์ ๋ฐฐ์ ๋ค. align-self
๋ container์align-items
์์ฑ์ ๋ฎ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ถ๋ชจ๊ฐalign-items: flex-end;
์ฌ๋ ์์ดํ ๊ฐ๋ณ ํ ๊ฐ๋งalign-self: flex-start;
์ ์ฉ์ด ๊ฐ๋ฅํ๋ค!order
๊ฐ์ ์ฃผ๋ฉด ๋งํฌ์ ์์๋ ๊ทธ๋๋ก์ง๋ง, ์๊ฐ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์์๊ฐ ๋ฐ๋๋ค.order
๋ ์์น๋ฅผ ์ง์ ํ๋ ๋ฒํธ๊ฐ ์๋๋ผ ์ฐ์ ์์๋ฅผ ๋ํ๋ธ๋ค. ์์๊ฐ๋ ๊ฐ๋ฅํ๋ค.
- container(๋ถ๋ชจ)์ item(์์)์
flex
์์ฑ์ ์ค์ตํด ๋ณผ ์ ์๋ ์ฝ๋ํ ๋งํฌ! (1), (2)
flexbox defense 11,12๋ฒ
์ด์ flex
์์ฑ๋ค๋ ๋ค ๋ฐฐ์ ๊ฒ ๋ค, ์ด์ ๋ชปํ๊ณ ๋จ์ flexbox defense์ 11, 12๋ฒ์ ํด๊ฒฐํด๋ณด์๋ค!
order
์ align-self
์์ฑ์ ์ดํดํ๋ ๊ฐ๋จํ ํ๋ฆฌ๋ ๋ฌธ์ ๋ค์ด์๋ค.
๋ฐฐ์ด ๊ฒ์ ๋ฐ๋ก ์จ๋จน์ผ๋ ์ข๋ค :)
๋ํ์ค์ผ ์๋ฝ๐
grid
์ด ๊ทธ๋ฆผ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค :)
- ๊ทธ๋ฆฌ๋ ์์ดํ ๋ค์ ์ปจํ ์ด๋๋ฅผ ์ต๋ํ ๊ฝ๊ฝ ์ฑ์ฐ๋ ค๊ณ ํ๋ค.
grid-template-columns
- ์ด์ ๋์ด๋ฅผ ์ค์
grid-template-rows
- ํ์ ๋์ด๋ฅผ ์ค์ repeat
(๋ฐ๋ณตํ์, ๋ฐ๋ณต๊ฐ)์
grid-template-columns: repeat(3, 1fr);
์ด๋ฐ ์์ผ๋ก ์ฐ์ด๋๋ฐ, ์ด๋ ๊ณง
grid-template-columns: 1fr 1fr 1fr;
๊ณผ ๊ฐ์ ๋ง์ด๋ค.fr
์ fraction์ด๋ผ๋ ๋ป์ผ๋ก,grid
์์๋ง ์ฐ์ด๋ ๋จ์๋ค.
์ซ์ ๋น์จ๋๋ก ํธ๋์ ํฌ๊ธฐ๋ฅผ ๋๋๊ฒ ๋๋๋ฐ, 1fr 1fr 1fr์ 1:1:1 ๋น์จ์ธ 3๊ฐ์ ์ด์ ๋ปํ๋ค.- ๊ทธ๋ฆฌ๋๋ ์์ดํ ๋์ด๋ฅผ ๊ฐ์ ํ์ง ์๋๋ค. ์ปจํ ์ธ ์นํ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ๋์ด๋๊ณ , width, height ๊ฐ์ฒ๋ผ ๋ฑ ๊ณ ์ ๋์ง ์๋๋ค.
gap
- ํ๊ณผ ์ด ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ค์ fr
๋จ์๋ฅผ ์ฐ์ง ์๊ณ ํผ์ผํธ(%
)๋จ์๋ฅผ ์ฐ๊ฒ ๋๋ฉด ๊ฐญ ์์ญ์ ๋ฌด์ํ๊ณ ์คํฌ๋กค์ด ์๊ธธ ์ ์๋ค.- ์ ์์ญ ์ง์ โญ
grid-column: 1 / span 2;
/* grid 1๋ฒ๋ถํฐ ์์ํด์ 2"์นธ" ์ฐจ์ง */
grid-column: 1 / 3;
/* grid 1๋ฒ๋ถํฐ 3๋ฒ "๋ผ์ธ"๊น์ง ์ฐจ์ง */
animation
๋ง๋ณด๊ธฐ
(https://ddooyn.github.io/front-end-school/class/083.html)
- ์ ์ฝ๋ฒ ์ฝ๋ํ์คํฐ๋ฒ ํํ์ด์ง์ ์๋ CSS
animation
ํจ๊ณผ๋ฅผ ๊ฐ์ฌ๋์ ๋ฐ๋ผ ๊ฐ์ด ์ค์ตํด๋ณด์๋ค.
์ด๊ฑฐ ์ง์ง ๋ฐฐ์ฐ๊ณ ์ถ์๋๋ฐ..! ์๊ฒ ๋๋ ๋๋ฌด ํ๋ จํ๋ค. - ๋ด๊ฐ ์๊ฐํ ํต์ฌ์
1) ์ ๋๋ฉ์ด์ ์์transform: translateY
๋ฅผ ์ฌ์ฉํด ์ง์ ์ด๋ฆ ๋ฆฌ์คํธ๋ฅผ Y์ถ์ผ๋ก ๊ณ์ ์ด๋ํ๊ฒ ํ๊ณ ,
2) ํ๋์ ์ง์ ์ด๋ฆ๋ง ๋ณด์ด๋๋ก<ul>
์ ๊ฐ์ธ๋ ๋ถ๋ชจ ๋ฐ์ค์ ์ ๋นํ ํฌ๊ธฐ๋ฅผ ์ ํด์ค ๋ค ๊ทธ ๋ฐ์ ๊ฒ๋ค์ ๋ณด์ด์ง ์๋๋กoverflow: hidden;
์ ์ธ
3) ๊ฐ์ ์์::after
๋ฅผ ์ด์ฉํดbox-shadow
์์ฑ์inset
์ผ๋ก ๋ธ๋ฌ ํจ๊ณผ๋ฅผ ๋๋ค.
(inset ์ค๋ ์ฒ์ ์์๋ค. ์์ชฝ ๊ทธ๋ฆผ์)
4) ์ ๋๋ฉ์ด์ ์box-shadow: inset 0 0 20px 20px #000;
infinite
๋ฅผ ์ฃผ์์ ๋, ์ฒ์๊ณผ ๋์ ์ฐ๊ฒฐ์ด ์์ฐ์ค๋ฝ๋๋ก ์ ์ผ ์ฒ์์ ์ค๋ ๋ฆฌ์คํธ ํญ๋ชฉ์ ๋ง์ง๋ง์ ํ๋ฒ ๋ ์ ์ด์ฃผ๋ ๊ฒ์ด๋ค. - ์์ฉํด์ ๊ฐ๋ก๋ก ์ด๋ํ๊ฒ ํด๋ณด๋ ค๋ค๊ฐ ์ธ๋ก๋ณด๋ค ์ด๋ ค์์ ์คํจํ๋ค ๐
- ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ ๋๋ฉ์ด์
๊ณผ์ ์ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์์ด ๋จ์ํ
ease-in-out
,ease-in
,ease-out
๋ฐฉ์ ๋ฟ ์๋๋ผ ์ํ๋ ๋๋ก ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ค. - https://matthewlein.com/tools/ceaser ์ ๋๋ฉ์ด์ ํด ์ฌ์ดํธ์ธ๋ฐ ๋ค์ํ ํจ๊ณผ๋ฅผ ๊ตฌ๊ฒฝํ ์ ์์๋ค.
์ฐธ๊ณ ์๋ฃ
1) https://developer.mozilla.org/ko/docs/Web/CSS/flex-basis
2) https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
3) https://studiomeal.com/archives/533 grid ์ดํดํ๊ธฐ
4) https://developer.mozilla.org/ko/docs/Web/CSS/gap
5) https://developer.mozilla.org/ko/docs/Web/CSS/box-shadow
[ ์คํฐ๋ ]
[ ์งํ์ํฉ ]
๊ฒํฐ๋๋ ๊ฒ(์ผ๋ฅด์ง ์์ ์ฌ๋๋ค์ ์ค)ํฐ๋๊ฐ ๋ถ๋ช
ํ๋ค.
ํ๋ฃจ ๋ถ๋ ์ ๋งํผ์ฉ์ด๋ฉด ํ ๋งํ๋ค! ๋ผ๊ณ ์๊ฐํ๋ ๋๋ ํ๋ฉด ํ ์๋ก HTML/CSS์ ๋ช์ ๋น ์ง๋ ๊ธฐ๋ถ์ด๋ค ๐ต ์ฝ๋ ์ค์ด ๊ธธ์ด์ง์ ๋ฐ๋ผ div๋ ์กฐ๊ธ์ฉ ์ฐ๊ธฐ ์์ํ๋ค ๐ฅ ๋งํฌ์
๋ถํฐ ๋ง์์ ์๋๋๋ฐ ์ง๊ธ ๊ฐ์์์๋ ์๊ฐ์ด ์์ด์ ๊ทธ๋ฅ ํ๋ฃจ ๋ชฉํ ๋ฌ์ฑํ๊ณ ์ต๋ํ ๋น์ทํ๊ฒ ๋ณด์ด๋ ๋ฐ ์์๋ฅผ ๋๊ธฐ๋ก ํ๋ค.
[ ์คํ๋ฆฐํธ ํ๊ณ ]
1์ฐจ ์ํฌ์ต ์ดํ 6์ผ๋ง์ ์๋์ค ์ฝ์น๋์ ๋ค์ ๋ต๋ค.
ํ๊ณ ๊ทธ๋ฃน 7๋ฒ๋ฐฉ ์ฌ๋๋ค๋ ๋ค์ ๋ง๋ฌ๋๋ฐ ๋ ๋ฒ์งธ ๋ง๋จ์ด๋ผ ๋ฐ๊ฐ์ ๋ค ๐
๊ณ์ ์ํฌ์ต ์คํ๋ ๋ ์ํธ์ ๋ด์ฉ์ ์ถ๊ฐํด๋๊ฐ๊ณ ์๋ค.
์ด๋ฒ ์ฃผ ๋ด๊ฐ ์ ํ ์ก์
ํ๋์ ๋ค์๊ณผ ๊ฐ๋ค.
๐ก 1์์ 1์ผ 1 TIL ์ ์ง
- ์ ์จ์ผ๊ฒ ๋ค๋ ๊ฐ๋ฐ์ ๋ฒ๋ฆฌ๊ณ
(๋น๊ณต๊ฐ๋ก ๋จผ์ ์ฌ๋ฆฌ๊ณ ๋ณต์ตํ ๋ ๋ด์ฉ ๋ณด์ถฉํด์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ผ๋ก)- ๊ทธ๋ ๋ฐฐ์ด ๋ด์ฉ ๋ด๊ฐ ์ ์ดํดํ๊ธฐ ์ํด์!
๐ก 2์์ ์คํฐ๋ ๋ฅ๋์ ์ฐธ์ฌ
- ํ๋ฃจ ์ ํด์ง ๋ถ๋ ๊ผญ ํด๋ก ํ๊ธฐ
- ๋ค๋ฅธ ์ฌ๋์ด ์ง ์ฝ๋๋ฅผ ์ฝ๋ ๋ฅ๋ ฅ ํค์ฐ๊ธฐ
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํ ํผ๋๋ฐฑ ์ฃผ๊ณ ๋ฐ๊ธฐ
- ๋ด๊ฐ ์ง ์ฝ๋ ๊ฐ์ ํด์ ์ปค๋ฐ
๐ก 3์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๊ณต๋ถ
- ์ฃผ๋ง๋ง ๊ฐ์ ์๊ฐํ ๊ฒ
- ํ ,์ผ์์ผ ํ๋ฃจ 2์๊ฐ ์ด์ ๊ณต๋ถ
- ํ์ผ์ ๋ฌด๋ฆฌํ์ง ์๊ธฐ
์ถ๊ฐ๋ก ๊ทธ๋ฃน ์ฐจ์์ ์ก์ ํ๋๋ ์ ํด๋ณด์๋๋ฐ, ์ฐ๋ฆฌ๋ ๋์ฝ ํ๊ณ ๊ทธ๋ฃน ์ฑ๋์
- ๋งค์ฃผ ๊ธ์์ผ ์ฃผ๋ง ๊ณํ ๊ณต์
- ๋งค์ฃผ ์์์ผ ์ฃผ๋ง ๊ณํ ํ๊ณ
์ฃผ๋ง์ด ๋ฌด๋์ง์ง ์๋๋ก ์ด๋ ๊ฒ ์ฌํํ๋ฉด์๋ ์ข์ ํ๋์ด ๋์๋ค :)
๋ค์ ์คํ๋ฆฐํธ ํ๊ณ ๋๊น์ง ๋ ์ด์ฌํ ๋ฌ๋ ค๋ณผ ๊ฒ์ด๋ค ๐คญ
2์ฃผ์ฐจ์ ์ฒซ๋ ๋ โ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([๋ฉ์ฌ๐ฆ] 2์ฃผ์ฐจ(์) CSS flex/grid, ์คํ๋ฆฐํธ ํ๊ณ ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@ddooyn/๋ฉ์ฌ-2์ฃผ์ฐจ-์์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค