
๐ก ํท๊ฐ๋ ธ๋ ์ 1
์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ง
align-items: stretch๋ผ๋ ๊ธฐ๋ณธ ๊ฐ ๋๋ฌธ์ ๋์ด์ ๋ง์ถ์ด ๋์ด๋๋ ๊ฒ์ผ๋ก align-items: center๋ฅผ ์ง์ ํ๋ฉด ๋์ด๊ฐ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด ๋์ด ์์์ง๋ค.
๊ทธ ๋ค์ ๋๋น๋ฅผ ์ง์ ํ๋ฉด ๋๋ค.
๐ก ํท๊ฐ๋ ธ๋ ์ 2
header์ height๋ฅผ ์คฌ๋๋ header-bar์ ๋์ด๊ฐ ์๋ง์
๋์ด๋ฅผ header์ ์ฃผ๋ฉด header์ ๋์ด๋ ๊ณ ์ ์ด๋๋๋ฐ, header-bar๋ ๊ทธ ์์ ์์๋ค์ ๋์ด์ ๋ฐ๋ผ ๋ณํํ๋ค.
์์ ์ฌ์ง์์๋ ์ ์ผ ํฐ ์์์ธ ๋ฒ๋ญ์ด ์ด๋ฏธ์ง ์ฌ์ด์ฆ์ ๋ฐ๋ผ height๊ฐ auto๋ก ์ง์ ๋ ๊ฒ์ด๋ค.
๋ฒ๋ญ์ด ์ฌ์ด์ฆ๊ฐ ๋ ์ปธ์ผ๋ฉด header-bar์ ๋์ด๋ ๋ ์ปธ์ ๊ฒ์ด๋ค!

.header {
background-color: #111111;
}
.header-bar {
height: 180px;
display: flex;
justify-content: flex-start;
align-items: center;
gap: 20px;
color: #999999;
}
๐ก ๋ฌธ์ ์ 1
์ ์hr์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ง๋์ง
์ ์ด๋ผ๊ณ ๋ฌด์์ hr์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋ค.
hr ํ๊ทธ์ ์๋ฏธ๋ฅผ ๋ง์กฑํ์ ๋ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ด ์์์์๋ ๊ฐ์ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐ก ๊ฐ์์์
inline์์๋ก ํ ์คํธ์ ๊ธธ์ด๋งํผ ๋๋น๊ฐ ์ค์ ๋๋ ๊ฒ์ด๊ณ ๋ด๊ฐ ์์๋ก ๋๋น๋ฅผ ์ง์ ํ ์ ์๋ค.img์์๋ ๋ซ๋ ํ๊ทธ๊ฐ ํฌํจ๋๋ฏ๋ก ๊ฐ์์์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.content๋ ํ์์ด๋ค.

.description::before {
content: "";
width: 60px;
height: 1px;
**display: inline-block;**
background-color: currentColor;
}
๋๋น์ ๋์ด๋ฅผ ์ง์ ํ๋ ค๋ฉด ์ธ๋ผ์ธ์์๋ฅผ ๋ธ๋ก ์์๋ก ๋ฐ๊ฟ์ผํ๋ค.
์ด ๊ฐ์ ์์๋ฅผ ์ธ๋ผ์ธ ๋ธ๋ก ์์๋ก ๋ฐ๊พผ ํ ๋๋น์ ๋์ด๋ฅผ ์ง์ ํ์ฌ ์ ์ธ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ค.
๐ก ๋ฌธ์ ์ 2
๊ฐ๋ก์ ์ ์ด๋ป๊ฒ ์ธ๋ก๋ก ๊ฐ์ด๋ฐ ์ ๋ ฌ ํ๋์ง
์์ ์ฌ์ง์ description์ธ p์์์ baseline์ ๋ง์ถ์ด ์๋๋ก ์ ๋ ฌ์ด ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ๊ฐ๋ก์ ์ ๊ฐ์ด๋ฐ์ ์์นํ๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
โ๏ธflex-items์ธ descripton์ flex-container๋ก ๋ค์ ์ค์ ํ ์ ์๋ค.
โ๏ธflex-items๋ฅผ ๋ค์ ๋ถ๋ชจ์์๋ก ๋๊ณ ๊ทธ ์์ ๊ณ์ flex-items๋ฅผ ๋ง๋ค์ด ๊ทธ ์์์ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ!
โ๏ธ html
<section class="header-bar">
<img class="logo" src="./images/logo.png" />
<p class="description">Unlimited movies, TV shows, and more.</p>
<img class="anger" src="./images/anger.png" />
</section>
โ๏ธ css
.description {
font-size: 16px;
**display: flex;**
**align-items: center;**
}
.description::before {
content: "";
width: 60px;
height: 1px;
display: inline-block;
margin: 0 20px 0 30px;
background-color: currentColor;
}
++ margin: 0 20px 0 30px ๋์ gap์ ์ด์ฉํ์ฌ ์ฌ๋ฐฑ์ ๋๋ ๋ฐฉ๋ฒ
โ๏ธgap๊ณผ flex๋ ๋ถ๋ชจ ์์์!!!
.header-bar {
display: flex;
gap: 30px;
}
.description {
display: flex;
gap: 20px;
}
.description::before {
}

ํฝ์
๋จ์
์ธ์ ๋ ์ด ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ
๋ช ํฝ์
์ธ์งx, ๋ช ํผ์ผํธ์ธ์ง x
๊ณ ์ ๊ฐ์ ๋ฐ๋ผ ๋ฐ๋
๊ฐ๋ณ = wrapper - ๊ณ ์
โก๏ธ ์ฌ์ด๋ ๋ฐ์ ํฌ๊ธฐ๋ ๊ณ ์ ์ํค๊ณ ๋๋จธ์ง๋งํผ ๋ฉ์ธ ํ๋ฉด์ผ๋ก ์ฑ์
โก๏ธ ์ฐฝ์ ํฌ๊ธฐ๊ฐ ๋ฐ๋์ด๋ ์ฌ์ด๋๋ฐ๋ ๊ณ ์ ๋๊ณ ๋ฉ์ธ์ ํฌ๊ธฐ๋ง ๋ณํํ๋ค.

<div class="l_wrapper">
<div class="container">
<div class="container-main"> </div>
<div class-"container-sidebar"> </div>
</div>
</div>
โ๏ธ css
.container {
**display: flex;**
**align-items: flex-start;**
gap: 24px;
min-height: 848px;
}
.container-main {
flex-grow: 1;
}
.container-sidebar {
flex-basis: 168px;
}
flex-grow์ฌ์ด๋ ๋ฐ์ flex-basis: 168px๋ฅผ ์ ์ฉํ์ฌ 168๋งํผ ์ฌ์ด๋ ๋ฐ์ ๋๋น๋ฅผ ์ง์ ํด์ฃผ๊ณ , ๋ฉ์ธ์ flex-grow: 1๋ฅผ ์ฃผ๋ฉด gap, flex-basis๋ฅผ ๋บ l-wrapper์ ๋๋น๋ฅผ ์ ๋ถ ๋ฉ์ธ ๋ฐ์์ ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ฐฝ์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ด๋ ๋ฉ์ธ์ ์ค์ด๋ ์ฐฝ์ ๋ชจ๋ ๊ฐ์ฉ๊ณต๊ฐ์ ๊ฐ์ ธ๊ฐ๋๊น ๋๊ฐ์ ๋น์จ์ธ ๊ฒ์ด๋ค.
โ๏ธ flex-basis ์ gap๊น์ง ๋บ ๋๋จธ์ง ๊ณต๊ฐ์ flex-grow๋ก ๋๋ ๊ฐ๋ ๊ฒ
โ๏ธl_wrapper ๋ฐ์ค ์์์์ ๊ณต๊ฐ ๋ฐฐ์น์์ ๋ช
์ฌํ๊ธฐ!
โ๏ธ ๋ฉ์ธ ์์ ๋ค์ด๊ฐ๋ ์์ดํ
๋ค

๋ฉ์ธ์ l_wrapper์ ์ฌ์ด๋ ๋ฐ์ ๋๋น๋ฅผ ๋บ ๊ฐ์ฉ ๊ณต๊ฐ์ ์ ๋ถ๋ฅผ ๋๋น๋ก ๊ฐ์ง๋ค.
flex-wrap์ด 6๊ฐ๋flex-container (๋ฉ์ธ) ์์ flex-item๋ค์ด๋ฏ๋ก ๊ฐ๋ก๋ก ์ ๋ ฌ์ด ๋๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ์๊ฒ flex-wrap: wrap์ ์ ์ฉํด์ค๋ค.
flex-shrink์ด๋ ๊ฒ ์งํํ๋ฉด ๋ฉ์ธ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด์ container์ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ฉฐ flex-shrink: 1์ด๋ผ๋ flex-items์ ๊ธฐ๋ณธ๊ฐ ๋๋ฌธ์ ์ฌ์ด๋ ๋ฐ์ ๋๋น๊ฐ ์ค์ด๋ค๊ธฐ ์์ํ๋ค.
(๋ฐฉ์ด ๋จ์ผ๋ฉด ํํ์ ์๋์ด์ง๋ง ๋ฐฉ์ด ์์ด์ง๋ฉด ๋ฐฉ์ ์ค์ฌ์ ์ฐ๊ฒจ๋ฃ๋ ์ฑ์ง)
๐ ํท๊ฐ๋ ธ๋ ์ 1
sidebar์ ๋๋น๊ฐ ์ง์ ์ ํ๋๋ฐ ์ค์ด๋๋ ๊ฒ
์ฌ์ด๋ ๋ฐ์ flex-shrink: 0 ์ ์ถ๊ฐํ์ฌ ์ฌ์ด๋ ๋ฐ์ ๋๋น๊ฐ ์ค์ด๋ค์ง ์๋๋ก ํ๋ค.
(๊ณต๊ฐ์ ๊ณ ์ ํด์ฃผ๋ ๊ฒ!)
โก๏ธ ์ด๋ ๊ฒํ๋ฉด ๋ฉ์ธ์ ๋๋น๋ง ์กฐ์ ๋จ
flex-direction๊ทธ ๋ค์ ํ๋์ ์นด๋๋ฅผ ๋ง๋ค์๋๋ฐ, ์ด๋๋ ํ๋์ ์นด๋๋ฅผ ๋ flex-container๋ก ์ง์ ํ์ฌ ์์ ์๋ ์ด๋ฏธ์ง์ ๊ธ, ๋ฒํผ ๋ฑ์ ์ธ๋ก๋ก ์ ๋ ฌํ์๋ค.
โก๏ธ flex-direction: column
<div class="card-container">
<img class="card-image" src="./images/cover002.png" />
<div class="card-main">
<h4 class="card-title"></h4>
<p class="card-content"></p>
</div>
<button class="card-button"></button>
</div>
</div>
โ๏ธ css
.card-container {
display: flex;
flex-direction: column;
border-radius: 16px;
overflow: hidden;
width: 320px;
}
flex-grow๐ ํท๊ฐ๋ ธ๋ ์ 2
๋ฒํผ์ ์นด๋์ ๋งจ ์๋๋ก ์ ๋ ฌํ๋ ๊ฒ
flex-grow:1์ ์ ์ฉํ์ฌ ๋จ๋ ๊ณต๊ฐ์ ์ ๋ถ ๊ฐ๊ฒ ํ๋ค.margin: 0 auto์ ์ ์ฉํ์ฌ ์ข์ฐ๋ก ๊ฐ์ด๋ฐ์ ์์นํ๋๋ก ํ๋ค.โก๏ธ ์นด๋ ๊ฐ์ด๋ฐ์ ๋ฉ์ธ ๋ถ๋ถ์ด ๋จ๋ ๊ฐ์ฉ ๊ณต๊ฐ์ ๋ค ๊ฐ๊ฒ ๋๋ฏ๋ก ๋ฉ์ธ์ ๊ณต๊ฐ์ด ์ปค์ ธ ๋ฒํผ์ ์์ฐ์ค๋ฝ๊ฒ ์์ ๋งจ ๋ฐ์ผ๋ก ๊ฐ๊ฒ๋๋ค.
โก๏ธ ์ด๋ ๋งจ ๋ฐ์ ๋ฒํผ์ ์ข ๋์ฐ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ card-container์ ๋งจ ๋ฐ์ ํจ๋ฉ์ ์ค ๊ฒ!
.card-container {
padding-bottom: 10px;
}
.card-main {
padding: 20px;
flex-grow: 1;
}
.card-button {
width: 300px;
height: 48px;
**margin: 0 auto;**
}
โ๏ธ sidebar์ ๋๋น๋ฅผ ๊ณ ์ ํ ๋๋ ๋ ๊ฐ์ง์ ๋ฐฉ๋ฒ์ด ์๋ค.
flex-basiswidthwidth๊ณ ์ ๊ฐ์ ์ ์ฉํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก width๊ฐ ์ง์ ๋๋ฉด min-width๋ ์๊ฐํ์ง ์์๋ ๋๋ค.
โ๏ธmin-width๋ width๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ํท๊ฐ๋ ธ๋ ์ 1
sidebar์ ๋๋น๋ฅผflex-basis๋ก ์ง์ ํ๋๋ฐ๋ ์ค์ด๋๋ ๊ฒ
flex-shrink: 0.container-main {
flex-grow: 1;
}
.container-sidebar {
flex-basis: 168px;
**flex-shrink: 0;**
}
min-width๋ฅผ ๊ณ ์ ๊ฐ์ผ๋ก ์ค์ .container-main {
flex-grow: 1;
}
.container-sidebar {
width: 168px;
**min-width: 168px;**
}
flex-basis: 0.container-main {
flex-grow: 1;
**flex-basis: 0;**
}
.container-sidebar {
width: 168px;
}
flex-basis๋ 0์ด๋ฏ๋ก ์ต๋๋ก ์๊ฒ ๋ง๋ ๋ค.
โ๏ธ ์ด๋ min-width์ ๊ธฐ๋ณธ ๊ฐ ๋๋ฌธ์ ์ปจํ ์ธ ๋ฅผ ๋ค ๋ฃ์ ์ ์์๋งํผ์ผ๋ก ๋๋น๊ฐ ์ต๋๋ก ์์์ง๋ค.
โ๏ธ ๋ ์ด์์์ ์์ ์ ์ผ๋ก ์ ์ง๋์ด์ผ ํจ
๋ด๋ถ ์ปจํ
์ธ ๋ก ์ธํด ๋ ์ด์์์ด ๋ณํํ๋ฉด ์๋๋ค!!
ex) ๋ ์ด์์์ ์ํ, ๋ด๋ถ ์ปจํ
์ธ ๋ ๋ฐ์ฐฌ ๊ฐ๋
๋ฐ์ฐฌ์ ๋ ๋ด๋ , ์ ๊ฒ ๋ด๋ ์ํ์ ์ฌ์ด์ฆ๋ ๊ณ ์ ๋์ด์ผํจ
โญ๏ธ ์์์ ์ํด ๋ถ๋ชจ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ฉด ์๋๋ ๊ฒ ๋ ์ด์์ โญ๏ธ
๐ ๋ฌธ์ ์ํฉ
๋ ์ด์์ ์์ ์ปจํ ์ธ ๊ฐ ๋ถ๋ชจ ์์๋ณด๋ค ๊ธธ์ด์ ๋น ์ ธ๋๊ฐ ๋

.container-main {
flex-grow: 1;
**flex-basis: 0;**
**min-width: 0;**
}
.container-sidebar {
width: 168px;
}
min-width๊ฐ ์ปจํ
์ธ ์ ์ต์ ๋๋น ์ด๋ฏ๋ก flex-basis: 0์ ์ ์ฉํด๋ ์ปจํ
์ธ ๊ฐ ๊ธด ๋๋น๋ฅผ ๊ฐ์ง๋ฉด ์ด์ฉ ์ ์์ด ๋ถ๋ชจ์ ์์๋ณด๋ค ๋์น๊ฒ ๋๋ค.
์ด ๋๋ ๋์น๋ ๋ถ๋ถ์ min-width:0 + flex-basis: 0 ์ ์ ์ฉํ๋ค.

flex-grow๋ ๋จ๋ ๊ฐ์ฉ ๊ณต๊ฐ์์ ๋๋ ๊ฐ๋ ๊ฐ๋
์ด๋ฏ๋ก ๋ค๋ฅธ ๊ฒ๋ค ๋จผ์ ์๊ฐ
flex-basis: 0 ์ ๋๋น๋ฅผ ์ต์๋ก ์ค์ธ๋ค.
(์ด ๋๋ min-width: auto๋ผ๋ ๊ธฐ๋ณธ ๊ฐ ๋๋ฌธ์ ์๋ฌด๋ฆฌ ๋๋น๋ฅผ ์ค์ฌ๋ ์ปจํ
์ธ ์ ๋๋น๋ณด๋ค ์ค์ด๋ค ์ ์๋ค.)
min-width: 0 ์ต์ ๋๋น๋ฅผ 0์ผ๋ก ์ง์ ํด์ ์ปจํ
์ธ ์ ๋๋น๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์๋๋ก ๋ฐ๊ฟ์ค๋ค.
โก๏ธ ์ด๋๋ min-width:0 + flex-basis: 0 ๋ก ์ธํด ๋ฉ์ธ์ ๋๋น๊ฐ ๊ทธ๋ฅ 0์ด ๋๋ค.
์ด๋ ๊ฒ ์งํํ๋ฉด ๊ฐ์ฉ ๊ณต๊ฐ์ด ๋ง์ด ๋จ์ผ๋ฏ๋ก flex-grow ์์ฑ์ผ๋ก ์ธํด ๋จ์ ๊ฐ์ฉ ๊ณต๊ฐ์ ๋ฉ์ธ์์ ๊ฐ์ ธ๊ฐ๋ค.
โก๏ธ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ ์์์ ๋๋น๊ฐ ๋ถ๋ชจ ์์์ ๋๋น๋ฅผ ๋๋ ๊ฒ์ ์กฐ์ ํ ์ ์๋ค.
โ๏ธ ๋ ์ด์์ - ์์์ ์ํด ๋ถ๋ชจ์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ฉด ์๋๊ธฐ ๋๋ฌธ !!!

๐ก ๊ฟํ
โก๏ธ ๊ณ ์ ๋ถ๋ถ์๋ width๊ฐ ๋๊ณ
โก๏ธ ๊ฐ๋ณ ๋ถ๋ถ์๋ width๋ฅผ ์์จ์ ๊ตฌ๋ถํ๊ธฐ
โ๏ธ flex-item์์๋ min-width๊ฐ ๊ต์ฅํ ์ค์ํจ
โ๏ธ ๋ ์ด์์์ ๋ถ๋ชจ์
์ฅ์์ ์์ ์ฑ ํ๋ณดํด์ผํจ
โ๏ธ ์์ --> ์์ ์ฑ์ ํ๋ณดํ ๊ฒ ์์์ ์์ ๋กญ๊ฒ ๋ฐฐ์น
.container-main {
flex-grow: 1;
}
.container-sidebar {
width: 168px;
}
๐ ์๋ชป ์๊ฐํ ์
ul์์๋li๋ง๊ณ ๋ค๋ฅธ ํ๊ทธ๋ฅผ ๋ฃ์๋๋ฐ,
ul์์๋li๋ง๊ณ ํ๊ทธ๊ฐ ๋ค์ด๊ฐ๋ฉด ์๋๋ค.

โ๏ธ before
<ul>
<h2>Action & Adventure</h2>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<h2>Dramas</h2>
<li></li>
<li></li>
<li></li>
</ul>
โ๏ธ after
<ul>
<li>
<h2>Action & Adventure</h2>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</li>
<li>
<h2>Dramas</h2>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</li>
</ul>
++ .category-list > li
category-list ์์ ์๋ li์ค ๋ฐ๋ก ์๋์ ์๋ li

letter-spacing์ ์ ์ฉํ๋ฉด ๊ฐ ์ํ๋ฒณ์ ์ค๋ฅธ์ชฝ์ ์ ์ฉ์ด ๋๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํด๋ ์ผ์ชฝ์ผ๋ก ์ ๋ ค ๋ณด์ด๋ ํ์์ด ์ผ์ด๋ ์ ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด text-indent๋ฅผ letter-spacing๊ฐ ๋งํผ ๋ฃ์ด ๋งจ ์ฒ์ ์ํ๋ฒณ์ ์ผ์ชฝ์๋ ๊ฐ๊ฒฉ์ด ์๊ฒจ ์ ํํ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ ์ ์๋ค.