#3.8 Classes
#3.9 Inline Block
#3.10 Flexbox Part One
flexbox: box๋ฅผ ์ด๋๋ ์์ ๋กญ๊ฒ ๋ ์ ์๋ค.
์ฐฝ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ ์ผ๋ก content์ ํฌ๊ธฐ๊ฐ ๋ณํ๋ค.
>>flexbox๋ฅผ ์ฌ์ฉํ ๋ ์ง์ผ์ผํ 3๊ฐ์ง ๊ท์น
1. ์์์๊ฒ๋ ๋ช ์ํ์ง ์๊ณ ๋ถ๋ชจ์๊ฒ ๋ช ์ํ์ฌ flex container๋ก ๋ง๋ ๋ค.
= ์์๋ค์ ์์ง์ด๋ ค๋ฉด ๋ถ๋ชจ์๊ฒ๋ง ๋งํ๋ฉด ๋๋ค. display: flex;
<style>
body {
display: flex;
justify-content: space-between;
}
</style>
2. ์ฃผ์ถ(main axis)๊ณผ ๊ต์ฐจ์ถ(cross axis)
flex container๋ ๋ ๊ฐ์ ์ถ์ ๊ฐ๋๋ค.

*์ฃผ์ถ์ ๊ธฐ๋ณธ๊ฐ์ด ์ํ, ๊ต์ฐจ์ถ์ ์์ง์ผ๋ก ์ค์ ๋์ด ์๋ค.
justify-content๋ ์ฃผ์ถ์ ๋ฐ๋ผ ์์ง์ธ๋ค.
align-items๋ ๊ต์ฐจ์ถ์ ๋ฐ ์์ง์ธ๋ค.
ex) body๊ฐ height์ ๊ฐ์ง์ง ์๊ณ box์ ํฌ๊ธฐ ๋งํผ๋ง ํฌ๋ค. (=์ด๋ฏธ ๋งจ ์์๋๋ฅผ ์ฐจ์งํ๊ณ ์์ง์ผ๋ก ์ค์ฌ์ด๋ค.?)
โ align-items๋ฅผ ์ค์ ํ๋๋ผ๋ ์ ์ฉ์ด ์๋๋ค.
โ body๋ฅผ ์์ง์ผ๋ก ์์ง์ด๊ณ ์ถ์ผ๋ฉด height ๊ฐ์ ์ค์ . height: 100vh;
vh = viewport height (viewport = screen)
100vh : ํ๋ฉด ๋์ด์ 100%
โ align-items๊ฐ ์ ์ฉ๋์ด ์์ง์ผ๋ก ์ด๋ํ๋ค.
#3.11 Flexbox Part Two
์ฃผ์ถ๊ณผ ๊ต์ฐจ์ถ์ ๋ํดํธ๋ก ์ค์ ๋์ด ์๋ ์์ง, ์ํ์ ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด flex-direction์ ์์ ํ๋ค.
flex-direction์ ๋ ๊ฐ์ง ์ต์ ์ด ์๋ค. : column / row (default)
flex-direction: column; ์ ์ค์ ํ๋ฉด ์ฃผ์ถ๊ณผ ๊ต์ฐจ์ถ์ด ๋ฐ์ ๋๋ค. ์ฃผ์ถ์ด ์์ง, ๊ต์ฐจ์ถ์ด ์ํ

<div>์์์ ํ ์คํธ์ ์์น๋ฅผ ์์ง์ด๊ณ ์ถ์ ๋๋ div๋ฅผ flex contatiner๋ก ์ค์ ํด์ค๋ค.

์ด๋ ๊ฒ ์ํ๋๋งํผ flex ๋ถ๋ชจ-์์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
#3.12 Fixed
position: ์์น๋ฅผ ์์ฃผ ์กฐ๊ธ์ฉ ์์ง์ด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์์ฑ์ด๋ค.
position: fixed : ํ๋ฉด์ ์คํฌ๋กคํด๋ ํด๋น content๊ฐ ๊ณ์ ์ ์๋ฆฌ์ ์์นํ๋ค.
์ด๋ฅผ ์ค์ ํ๋ฉด ๊ทธ ์๋ฆฌ๋จผํธ๊ฐ ๋ค๋ฅธ layer์ ์์นํ๋ฉด์ layer์ ๋งจ ์์ธต์ผ๋ก ์ค๊ณ , ๊ธฐ์กด์ ์์น์ ๊ณ ์ ๋๋ค.
์ด๋ top/ bottom/ left/ right: 00px ์ ์ฐ๋ฉด position: fixed ๋ก ๊ณ ์ ํ ์๋ฆฌ๋จผํธ๋ฅผ ๋ด๊ฐ ์ํ๋ ๊ณณ์ผ๋ก ์ด๋์์ผ์ ๊ทธ๊ณณ์ ๊ณ ์ ํ๋ค.

#3.13 Relative Absolute
position: static
- ๋ ์ด์์์ด ๋ฐ์ค๋ฅผ ์ฒ์ ์์นํ๋ ๊ณณ์ ๋๋ ๊ฒ
position: relative
- ์๋ฆฌ๋จผํธ๊ฐ ์ฒ์ ์์นํ ๊ณณ์ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ค.
top/ bottom/ left/ right ์ ์ด์ฉํด ์ฒซ ๊ธฐ์ค์ ์์ ์ํ์ข์ฐ๋ก ์์ง์ธ๋ค.
position: absolute
- ๊ฐ์ฅ ๊ฐ๊น์ด relative ๋ถ๋ชจ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ค.
absolute๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ถ๋ชจ๋ relative๋ก ๋ง๋ค์ด์ผ ํ๋ค.
*๋ง์ฝ ๋ถ๋ชจ ์ค์ relativeํ ๊ฒ์ ์ฐพ์ง ๋ชปํ๋ฉด body๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ง์ธ๋ค.
#3.14 Pseudo Selectors part One
pseudo selector: ์กฐ๊ธ ๋ ์ธ๋ถ์ ์ผ๋ก ์๋ฆฌ๋จผํธ๋ฅผ ์ ํํด ์ฃผ๋ ๊ฒ!

class๋ id๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ด๋ ๊ฒ pseudo selector์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ์ข์ ์ฝ๋์ด๋ค.
<style>
div:nth-child(2){
<!--2๋ฒ์งธ div-->
}
div:nth-child(even){
<!--์ง์๋ฒ์งธ div-->
}
div:nth-child(3n+1){
<!--3n+1๋ฒ์งธ div(3๊ฐ์ฉ ๋ฐ๋ณต)-->
}
</style>
#3.15 Combinators
1. a b { } โ a์ ์์ b
- ์ํ๋ ๋งํผ ๋ถ๋ชจ๋ฅผ ์จ๋ ์๊ด์๋ค.
<style>
div p span {
color: teal;
}
</style>
...
<div><p><span>hello!</span></p></div>
2. a > b { } โ ๋ฐ๋ก ๋ฐ!! ์์
3. a + b { } โ a ๋ฐ๋ก ๋ค์์ ์ค๋ ํ์ b
#3.16 Pseudo Selectors part Two
a ~ b { } โ ํ์ ๊ด๊ณ. ํ์ ์ด์ง๋ง ๋ฐ๋ก ๋ค์ ์ค์ง ์์ ๊ฒฝ์ฐ
tag[ attribute = "vallue" ] โ ์์ฑ์ ๊ฐ์ด "vallue"์ธ ํ๊ทธ๋ฅผ ์ ํ
tag[ attribute ~= "vallue" ] โ ์์ฑ๊ฐ์ด "vallue"๋ผ๋ ๋จ์ด๋ฅผ ํฌํจํ ํ๊ทธ๋ฅผ ์ ํ. ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋จ์ด์๋ง ์ ์ฉ
tag[ attribute *= "vallue" ] โ ๊ณต๋ฐฑ ์๊ด์์ด "vallue"๋ฅผ ํฌํจํ ํ๊ทธ ์ ํ.
๋ฑ๋ฑ ๋ง์ attribute selectors๊ฐ ์๋ค. mdn์์ ํ์ธ
#3.17 States
- active : ํด๋น ์์๋ฅผ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๊ณ ์๋ ์ํ
- hover : ๋ง์ฐ์ค ์ปค์๊ฐ ๋์ ์์ ์์ ๋
- focus : ๋ง์ฐ์ค๋ก ํด๋ฆญํ๊ฑฐ๋ ํค๋ณด๋๋ก ์ ํํ์ ๋ (์: tabํค๋ก ์ ํ)
- visited : ๋ฐฉ๋ฌธํ ๋งํฌ์ธ ๊ฒฝ์ฐ
- focus-within : focused๋ ์์์ ๊ฐ์ง ๋ถ๋ชจ ์๋ฆฌ๋จผํธ์ ์ํ
#3.18 Recap
๋ช ๊ฐ์ง pseudo elements
1. ::placeholder
placeholder์ ์คํ์ผ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
2. ::selection
ํ ์คํธ๋ฅผ selectํ์ ๋ (ํด๋ฆญํด์ ๋๋๊ทธํ์ ๋) ๋ฐ์ํ๋ค.
3. ::first-letter / ::first-line
์ฒซ ๊ธ์ / ์ฒซ ์ค์๋ง ์ ์ฉ๋๋ค.
#3.19 Colors and Variables
<์์ ์ฒด๊ณ>
1. hex code : #fcce00 ๊ณผ ๊ฐ์ ํ๊ธฐ
2. rgb : rgb(252, 206, 0)์ ๊ฐ์ ํ๊ธฐ
3. rgba : a๋ ํฌ๋ช ๋๋ฅผ ๋ํ๋ธ๋ค. (alpha; %)
rgba(223, 203, 0, 0.5) โ 0.5๋ 50%์ ํฌ๋ช ๋๋ฅผ ๊ฐ์ง๋ค.
>>์ฝ๋๋ฅผ ํธ๋ฆฌํ๊ฒ ์์ฑํ๊ธฐ ์ํด ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์) :root์ ๋ณ์๋ฅผ ์ถ๊ฐํ๋ฉด ์์์ ๋ฐ๊ฟ ๋ ํ๋ํ๋ ๋ค ๋ฐ๊ฟ ํ์ ์์ด ๋ณ์๋ง ์์ ํด์ฃผ๋ฉด ๋๋ค.
* :root๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ document์ ๋ฟ๋ฆฌ๊ฐ ๋๋ ๊ฒ์ด๋ค.
<style>
:root {
--main-color: #fcce00;
}
p {
background-color: var(--main-color);
}
a {
color: var(--main-color);
}
</style>
๋ณ์ ์ค์ : --๋ณ์์ด๋ฆ
* ๋์ด์ฐ๊ธฐ๋ dash(-)๋ก ์ฑ์ฐ๊ธฐ
๋ณ์ ์ฌ์ฉ: var(--๋ณ์์ด๋ฆ)