์์๋ฅผ ํจ์จ์ ์ด๊ณ ๋์ ์ผ๋ก ๋ฐฐ์ดํ ์ ์๋ ๋ ์ด์์ ๋ชจ๋ธ
๋ ์ด์์์ 1์ฐจ์์ด๋ฉฐ ๊ณต๊ฐ์ด ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ ์ปจํ
์ด๋ ๋ด๋ถ์ ์์๋ฅผ ๋ฐฐ์นํ ์ ์๋ค.
์ด ๋ ์ด์์์ ์์๋ฅผ ๋ฐ์ํ์ผ๋ก ๋ง๋ ๋ค.
=> ์์๋ฅผ ํ์ํ๋ ์ฅ์น์ ์ข
๋ฅ์ ๋ฐ๋ผ ์์์ ๋์์ด ๋ณ๊ฒฝ๋๋ค.
์์๋ฅผ ์ ์ฐํ๊ฒ ๋ง๋ค๊ณ ์ ์ ํ ์์น์ ๋์นญ์ ์ ๊ณตํ๋ค.
Block
์์๋ฅผ ๋ธ๋ก ๋ ๋ฒจ๋ก ํ์. ์ค๋ฐ๊ฟ์ด ์ผ์ด๋๊ณ , ๋๋น๊ฐ ๋ถ๋ชจ ์์์ ๋ง์ถฐ ํ์ฅ
Inline
: ์ค๋ฐ๊ฟ์ด ์ผ์ด๋์ง ์์ผ๋ฉฐ, ๋ด์ฉ๋งํผ๋ง ๋๋น๋ฅผ ์ฐจ์ง
ํ
์คํธ์ ์ฌ์ฉ๋๋ ๋ ์ด์์, ์ฃผ๋ณ ํ
์คํธ์ ๋๋ํ ๊ฐ์ ์ค์ ๋ฐฐ์น
ex) <span>
, <a>
, <strong>
Table
: 2์ฐจ์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ
์ด๋ธ
Positioned
: ์์์ ํน์ ์์น ์ง์
display: flex;
๋๋ display: inline-flex;
๋ฅผ ์ฌ์ฉํ์ฌ Flex Container๋ฅผ ์ค์ ์ด ์ถ๋ค์ Flex Container ๋ด๋ถ์์ Flex Items๊ฐ ์ด๋ป๊ฒ ๋ฐฐ์น๋๊ณ ์ ๋ ฌ๋๋์ง๋ฅผ ๊ฒฐ์
์ฃผ์ถ(Main Axis)
Flex Container์์ Flex Items๊ฐ ๋ฐฐ์น๋๋ ์ฃผ๋ ์ถ
๊ต์ฐจ์ถ(Cross Axis)
Main Axis์ ์์ง์ธ ์ถ
๊ธฐ๋ณธ์ ์ธ Flex ๋ ์์ดํ
๊ฐ์๊ฐ ๋์ด๋๋ฉด ์์ดํ
์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๋ฉด์ ์ด๋ป๊ฒ๋ ๋จ์ผํ ์ค์ ํฌํจ์ํค๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ flex-wrap: wrap
์ค์ ์ ์ฃผ๋ฉด ์ค๋ฐ๊ฟ์ด ์ผ์ด๋๋ค.
flex-flow :
<flex-direction>
<flex-wrap>
.container {
flex-flow : column wrap;
}
Main Axis๋ฅผ ๋ฐ๋ผ Flex Items๋ฅผ ์ด๋ป๊ฒ ๋ฐฐ์นํ ์ง๋ฅผ ๊ฒฐ์
๐ space-evenly ์ space-around ์ ์ฐจ์ด
Cross Axis๋ฅผ ๋ฐ๋ผ Flex Items๊ฐ ์ด๋ป๊ฒ ์ ๋ ฌ๋ ์ง๋ฅผ ๊ฒฐ์
๊ต์ฐจ์ถ ๊ธฐ์ค ์ค๊ณผ ์ค ์ฌ์ด์ ์ ๋ ฌ์ ์ค์ , ํ๋ค ๊ฐ์ ๊ณต๊ฐ์ ์กฐ์ ํ๋ ๋ฐ ์ฌ์ฉ
โ๏ธflex-wrap : wrap ์ธ ์ํ์์ ๋ ์ค ์ด์์ธ ์ํ์์๋ง ์ ์ฉ
๊ฐ๋ณ ํ๋ ์ค ํญ๋ชฉ์ ๋ํด ๊ธฐ๋ณธ ์ ๋ ฌ(align-items๋ก ์ง์ ๋ ์ ๋ ฌ) ์ฌ์ ์
โ๏ธalign-content ์์ฑ์ ์ง์์ค์ผ ์ ๋๋ก ์ ์ฉ
=> align-self ๋ฅผ ํตํด ์์ ์์ดํ
๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๋ ฌํ ์ํ
ํ๋ ์ค ์ปจํ
์ด๋์ ๋ํ๋๋ ์์ ์ ์ด
๊ธฐ๋ณธ ๊ฐ์ 0์ด๋ฉฐ, ์ซ์๊ฐ ๋ฎ์ ๊ฒ๋ถํฐ ๋จผ์ ๋ฐฐ์น
์ ์ฐํ ๋ ์ด์์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์์ฑ
โ ๋ง์ฝ flex-grow, flex-shrink ๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด
๋ทฐํฌํธ ํฌ๊ธฐ๊ฐ ๋์ด๋๋ , ์ค์ด๋ค๋ ๊ด๊ณ ์์ด ์ผ์ ํ ํฌ๊ธฐ๋ฅผ ์ ์งํ๋ค.
Flex Container ๋ด์ ์ฌ์ ๊ณต๊ฐ์ด ์์ ๋,
flex-grow ๊ฐ์ ๋ฐ๋ผ Flex Items๊ฐ ์ด ๊ณต๊ฐ์ ๋น์จ์ ๋ฐ๋ผ ๋ถ๋ฐฐ
๐ ๊ณ์ฐ ๋ฐฉ๋ฒ
๐ Tip ์ฌ์ดํธ ๋ ์ด์์์์ ํธํฐ ํ๋จ์ ๋ฐฐ์นํ ๋ ์ฌ์ฉํ๊ธฐ ์ข๋ค.
Flex Container์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ด Flex Items๊ฐ ๋ง์ง ์์ ๋,
flex-shrink ๊ฐ์ ๋ฐ๋ผ Flex Items๊ฐ ์ค์ด๋๋ ์ ๋๋ฅผ ์กฐ์
flex-shrink : 0 ์ผ๋
flex-shrink : 1 ์ผ๋
โflex-shrink๋ฅผ ํตํด ์ค์ด๋ ํ๋ฉดํฌ๊ธฐ๋ฅผ ์ปดํฌ๋ํธ๊ฐ ๋๋์ด๊ฐ์ง๋๋ฐ, ์ค์ด๋๋ ๋ถ๋ถ์ ๋น์จ ๊ฐ์ด ์ค์ ์ปดํฌ๋ํธ ํฌ๊ธฐ๋ณด๋ค ํฌ๋ค๋ฉด?
๊ทธ ์์ Text๊ฐ์ ํน๋ณํ ๋ด์ฉ๋ฌผ์ด ์๋ค๋ฉด ์์ ํ ์ฌ๋ผ์ ธ๋ฒ๋ฆฐ๋ค ๐๐
โgrow ๋ shrink๋ฅผ ์ผ์์๋ ํ๋ฉด์ ์ค์๋๋ฐ ํฌ๊ธฐ๊ฐ ์์์ง์ง ์์์
๋ถ๋ชจ ์ปจํ
์ด๋์ ํฌ๊ธฐ๊ฐ width:500px ์ฒ๋ผ ์ ์ ์ด๋ผ๋ฉด flex-shrink๋ฅผ ์ฌ์ฉํ๋๋ผ๋
๋ทฐํฌํธํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ชจ ์ปจํ
์ด๋ ํฌ๊ธฐ์ ๋ณ๋์ด ์์ผ๋ฏ๋ก Flex Item์ ์ค์ด๋ค์ง ์๋๋ค.
width:100% ๊ฐ์ด ๋ถ๋ชจ์ปจํ
์ด๋์ ๋ฐ์ํ ๋จ์๋ฅผ ์จ์ผ ํจ๊ณผ๊ฐ ์๋ค.
โshrink ๊ฐ ์ ์ฉ ๋์๋๋ฐ ์์ ธ๋์ค๋ ์ด์ ๋?
font-size ์์ฒด๋ฅผ ์ค์ผ ์ ์์ด์
๐ ๋ถ์
Q. flex-shrink๊ฐ 0์ธ Flex Item ์ด ํ๋๋ผ๋ ์์ผ๋ฉด, ๋ถ๋ชจ ์ปจํ
์ด๋๋ฅผ ์์ ธ๋์ฌ ์ ์๋ค. (x)
A. 0์ธ Item์ด ์๋๋ผ๋, 0์ด ์๋ Item์ด ์์ผ๋ฉด ๋น์จ๋ก ๋๋์ด๊ฐ์ง๋ฏ๋ก ์์ ธ๋์ค์ง ์์ ์๋ ์๋ค.
Q. 0์ด ์๋ flex-shrink๊ฐ ์ ์ฉ๋ Flex Item ์ด ํ๋๋ผ๋ ์์ผ๋ฉด, ๋ถ๋ชจ ์ปจํ
์ด๋๋ฅผ ์์ ธ๋์ฌ ์ ์๋ค. (o)
A. ์ถ์๋ ๊ตฌ์ญ์ flex-shrink๊ฐ ์ ์ฉ๋ Flex Item์ด ๋น์จ๋ก ๋๋์ด๊ฐ์ง๋ฏ๋ก ์์ ธ๋์ฌ ์ ์๋ค.
Flex Item์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ ์์ฑ
flex-grow flex-shrink flex-basis ์ ์ถ์ฝ
1) ๊ฐ์ด ํ๋์ผ ๋
2) ๊ฐ์ด ๋๊ฐ์ผ ๋
3) ๊ฐ์ด ์ธ๊ฐ์ผ ๋
=> ๋จ์๊ฐ ์์ผ๋ฉด ๋ฌด์กฐ๊ฑด flex-basis ์ด๋ค!
.table {
display: table;
width: 100%;
border-collapse: collapse;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid black;
padding: 10px;
}
<div class="table">
<div class="row">
<div class="cell">Header 1</div>
<div class="cell">Header 2</div>
<div class="cell">Header 3</div>
</div>
<div class="row">
<div class="cell">Row 1, Cell 1</div>
<div class="cell">Row 1, Cell 2</div>
<div class="cell">Row 1, Cell 3</div>
</div>
<div class="row">
<div class="cell">Row 2, Cell 1</div>
<div class="cell">Row 2, Cell 2</div>
<div class="cell">Row 2, Cell 3</div>
</div>
</div>
๐ ์ค์ต ์์
์์๋ฅผ ์ด๋ป๊ฒ ์์น์ํฌ์ง ์ ์ํ๋ฉฐ, ์๋์ 5๊ฐ์ง ๊ฐ์ ๊ฐ๋๋ค.
์์๊ฐ ์คํฌ๋กค ์์น์ ๋ฐ๋ผ ๊ณ ์ ๋๋๋ก ๋ง๋ค ๋ ์ฌ์ฉํ๋ ์์ฑ
๐ ํ์ฉ
ํค๋๊ฐ ํ์ด์ง ์๋จ์ ๊ณ ์ ๋์ด ์คํฌ๋กคํ ๋ ๋ฐ๋ผ์ค๋ ๊ฒ์ ์ ์ฉ
ํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ง๊ณ ์๋ ๋ค๊ฐํ(๋ณดํต ์ง์ฌ๊ฐํ)์ ์์ญ
์น ํ์ด์ง๋ฅผ ์ค์ ๋ก ๋ณผ ์ ์๋ ํ๋ฉด์ ๋ถ๋ถ
๋ธ๋ผ์ฐ์ ๋ทฐํฌํธ: ์น ํ์ด์ง๊ฐ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํ๋ฉด์ ํ์๋๋ ์์ญ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๋ฉด, ํ์ด์ง์ ์ฝํ ์ธ ๋ ์ด ๋ทฐํฌํธ ๋ด์ ๋ ๋๋ง๋ฉ๋๋ค.
๋๋ฐ์ด์ค ๋ทฐํฌํธ: ์ค์ ๋๋ฐ์ด์ค์ ํ๋ฉด ์์ญ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์๋ ํ๋ฉด์ ๋ฌผ๋ฆฌ์ ํฌ๊ธฐ์ ํด์๋๊ฐ ๋ทฐํฌํธ๋ฅผ ์ ์ํฉ๋๋ค.
๋ฌธ์ ๋ทฐํฌํธ: CSS์ viewport ๋จ์๋ฅผ ์ฌ์ฉํ ๋, ํ์ด์ง์ ์ ์ฒด ์ฝํ ์ธ ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฐ์์ ์์ญ์ ์๋ฏธํฉ๋๋ค. ์ด๋ CSS์ vw, vh, vmin, vmax ๋จ์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
1. meta viewport ํ๊ทธ
HTML ๋ฌธ์์ <head>
๋ถ๋ถ์ ์ฝ์
ํ์ฌ ๋ทฐํฌํธ์ ํฌ๊ธฐ์ ๋ฐฐ์จ์ ์ค์
๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์ ๋ฐ์ํ ๋์์ธ์ ๊ตฌํํ ๋ ์ฃผ๋ก ์ฌ์ฉ
<meta name="viewport" content="width=device-width, initial-scale=1.0">
โ vw ์ % ์ ์ฐจ์ด๋ โ
%
vw
vh์ vw๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ์ ๊ธฐ๋ฐํ๊ธฐ ๋๋ฌธ์ ์คํฌ๋กค๋ฐ๋ฅผ ํฌํจํ ํฌ๊ธฐ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ
vw ๋จ์๋ ์ธ์ ์ด๋์๋ ํ๋ฉด ์ฐฝ์ด๋ผ๋ ์ ๋์ ์ธ ๊ธฐ์ค์ ํตํด ๋จ์๋ฅผ ์ค์ ํ ์ ์๋ค.
ํ๋ฉด์ ๋๋น๊ฐ ์ค์ด๋ค๊ฑฐ๋ ๋์ด๋ ๋, vw ๋จ์๋ฅผ ์ฌ์ฉํ ์์์ ํฌ๊ธฐ๋ ๋ทฐํฌํธ ๋๋น์ ๋น์จ๋ก ์๋์ผ๋ก ์กฐ์ ํ๋ค.
100vw ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํฌ๋กค๋ฐ๊ฐ ์๊ธด๋ค. ์ฆ, vw ๋ ์คํฌ๋กค๋ฐ ์์ญ์ ํฌํจํ๋ ํฌ๊ธฐ์ด๋ค.
๊ฒฐ๋ก
vh์ vw๋ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ฐํ๊ฒ ๋์ํ๋ ๋ฐ์ํ ์น ๋์์ธ์ ์ ํฉ. ๋ฐ๋ฉด, ํผ์ผํธ๋ ๋ถ๋ชจ ์์์ ์์กด์ ์ธ ๋ ์ด์์์ ๊ตฌ์ฑํ ๋ ์ ์ฉํ๋ค. vw ์ % ๋ฅผ ํผ๋ํ์ฌ ์ฌ์ฉํ ์์ ํ๋ก์ ํธ ์งํ์ค์ ํ๋ฉด ๋ณ๊ฒฝ์ UI๊ฐ ํ๋ค๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ ์ ์ํ์.
๐ ์๋ฆฌ๋จผํธ๊ฐ ์์ด๋ ๋๊ฐ์ง ์ข
๋ฅ
z-index๊ฐ ์๋ ๊ฒฝ์ฐ์ ์์
๋ฑ์ฅํ๋ ์์๋๋ก