Intro..
์ด์ ๊น์ง HTML์ ๋๋ด๊ณ ์ค๋๋ถํฐ CSS์ ๋ํ ๊ฐ์๋ฅผ ๋ค์๋ค.
CSS ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๋ถํฐ ๋ง์ด ์ฐ์ด๋ ์์ฑ๋ค์ ๋ํด ํ์ตํ๋ค.
์ค๋ ํ์ตํ ๋ด์ฉ
: CSS
CSS๋, Cascading Style Sheets ์ฝ์์ด๊ณ Cascading ๋ป์ ์ฐพ์๋ณด๋ ์์์ ์๋๋ก ํ๋ฅด๋(์์ํ๋)์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์๋ค.
์ฐ์ ์์๋ถํฐ ์ ์ฉ๋๋ ์์์ ๊ฐ์ง ์คํ์ผ ์ํธ๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๊ธฐ๋ณธ ๋ฌธ๋ฒ
์ ํ์ { ์์ฑ1: ๊ฐ1; ์์ฑ2: ๊ฐ2 }
์ฌ๋ฌ ์์ฑ์ ์ง์ ํ ์ ์๊ณ ์์ฑ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๊ตฌ๋ถํ๋ค.
div { font-size: 16px; letter-spacing: 5px; }
๋ด๋ถ CSS, ์ธ๋ถ CSS, inline CSS
- ๋ด๋ถ CSS
- <head> ํ๊ทธ ์์ <style> ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ์์ฑ
- ์ธ๋ถ CSS
- ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ถ CSS๋ก ์ฌ์ฉํ๋ฉฐ, ์ธ๋ถ ์คํ์ผ ํ์ผ์ ๋ถ๋ฌ์จ๋ค.
- rel์ relation์ผ๋ก ๊ด๊ณ๋ฅผ ๋ปํ๋ค. ํ ํ์ผ๊ณผ ์ด๋ค ๊ด๊ณ๋ก ์ ์ํ ์ง ์ฐ๋ฉด ๋๋ค. ์คํ์ผ ์ํธ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ผ๋ก stylesheet๋ฅผ ์
<link rel="stylesheet" href="./style.css" />
- inline CSS
- ํ๊ทธ์ ์ง์ ์คํ์ผ์ ์ ์
- ์ ์ง๋ณด์๊ฐ ์ด๋ ต๊ณ ๋ฐ์ํ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ง์ํ๋ค.
<div style="font-size: 16px;">content</div>
CSS ์ฃผ์ ์ฒ๋ฆฌ: /* */ (VSCode์์ cmd + / ๋จ์ถํค๋ก ์ฃผ์ ์ฒ๋ฆฌํ ์ ์๋ค.)
์ ํ์
- ์ ์ฒด ์ ํ์ (*)
- ๋ชจ๋ ์์์ ์คํ์ผ์ ์ ์ฉํ ์ ์๋ ์ ํ์
- ์ ํ(ํ๊ทธ) ์ ํ์
- HTML ํ๊ทธ ์ด๋ฆ
- id, class ์ ํ์
- id๋ #์ผ๋ก ์์ํ๊ณ , class๋ .์ผ๋ก ์์ํจ
- ์์)
<div class="container" id="unique-container"></div>
.container {
color: blue;
}
#unique-container {
font-size: 20px;
}
- ์์ฑ ์ ํ์
- ์์๊ฐ ๊ฐ์ง ์์ฑ์ ์ ํ์๋ก ๋๊ดํธ([ ])๋ฅผ ์ฌ์ฉํด์ ์ ์ธํ ์ ์๋ค.
- ์์ฑ๊ณผ ๊ฐ์ ๋์์ ์ ๋ ฅํ๋ฉด ๊ฐ๊น์ง ๊ฐ์ ์์๊ฐ ์ ํ ๋จ
- ๋๊ดํธ ์์ ํ๊ทธ๋ช ์ ๋ถ์ด๋ฉด ์ข ๋ ๊ฐ๋ ฅํ๊ฒ ์ ํ์๋ฅผ ์ ํํ ์ ์๋ค. ex) a[href] => aํ๊ทธ ์ค href ์์ฑ์ ๊ฐ์ง ์น๊ตฌ๋ค๋ง ์ ํ
- ์์ฌ(๊ฐ์) ํด๋์ค: ๊ธฐ์กด "์ ํ์"์ ์ถ๊ฐํ๋ ํน๋ณํ ์ํ๋ฅผ ์ ํํ๋ ์ ํ์
- :hover => ๋ง์ฐ์ค ์ฌ๋ ธ์ ๋
- :focus => ํค๋ณด๋ ํญ ํค๋ก ์ด๋ ์ focus ๋๋
- :first=child => ๋ฆฌ์คํธ ์ฒซ ๋ฒ์งธ ์์๋ง ์ ํ
- :nth-child(n) => n๋ฒ์งธ ์์ ์ ํ
- ์์ฌ(๊ฐ์) ์์: ๊ธฐ์กด "์ ํ์"์ ์ถ๊ฐํ๋ ์ ํ ์์ ์ผ๋ถ๋ฅผ ์คํ์ผ๋งํ๋ ์ ํ์
- ::before => ์์ ์์ ์์ฌ ์์ ์์ฑ
- ::after => ์์ ๋ค์ ์์ฌ ์์ ์์ฑ
- <input>::placeholder => inputํ๊ทธ์ 'placeholder' ์คํ์ผ๋ง
์์
: ๋ถ๋ชจ ์์์ ์คํ์ผ ๊ฐ์ ์ด์ด๋ฐ์ ์์ ์์์ ์ ์ฉํ๋ ๊ฒ
div {
color: red;
}
div h2 {
color: inherit; /* ๋ถ๋ชจ ์์ ์คํ์ผ ๊ฐ์ธ red๋ฅผ ๊ฐ์ ธ์จ๋ค */
}
์ด๊ธฐํ
: ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ํ ์์ฑ์ ์ด๊ธฐ ๊ฐ์ ์ ์ฉ
emํ๊ทธ๋ ํฐํธ๊ฐ ์ดํ๋ฆญ์ฒด์ธ๋ฐ ๋ง์ฝ font-style: initial๋ก ์ง์ ํ ๊ฒฝ์ฐ ์ดํ๋ฆญ์ฒด๊ฐ ์๋ ๊ธฐ๋ณธ์ฒด๋ก ๋ณ๊ฒฝ๋๋ ์์์น ๋ชปํ ๊ฐ์ผ ์๋ ์์ผ๋ ์ด๊ธฐํํ ๋ ์ฃผ์ํ์ฌ์ผ ํ๋ค.
div {
color: red;
}
div h2 {
color: initial; /* ์ด๊ธฐ๊ฐ์ด ์ ์ฉ๋ผ์ red๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ด๊ธฐ๊ฐ์ด ์ง์ ๋จ */
}
๊ฒฐํฉ์
- ์์ ๊ฒฐํฉ์
- ํ ์นธ์ ๊ณต๋ฐฑ์ผ๋ก ์์ ์์๋ฅผ ์ ํํ ์ ์๋ค.
div span {
color: red;
}
- ์์ ๊ฒฐํฉ์
- ์ ์ ๋ ํฐ์ ์ง๊ณ ์์ ์์ ์ ํ
div > span {
color: red;
}
- ์ธ์ ํ์ ๊ฒฐํฉ์
- ๋ฐ๋ก ์์ ์์นํ ํ์ ์์ ํ๋๋ง!
a + p {
color: red;
}
- ์ผ๋ฐ ํ์ ๊ฒฐํฉ์
- ๋ชจ๋ ํ์ ์์ ์ ํ (์ด์ ์ ๋์จ ํ์ ๋ ์ํฅ x)
a ~ p {
color: red;
}
์ฐ์ ์์
: ์์ฑ ์์, ๊ฒฐํฉ, ์ ํ์์ ๋ฐ๋ผ ์ฐ์ ์์๊ฐ ๋ณ๊ฒฝ ๋จ.
<๊ธฐ๋ณธ์ ์ธ ์ฐ์ ์์ (๊ฐ์ฅ ๋ฎ์ ๊ฒ๋ถํฐ ๋์ ์)>
- ์ ํ(ํ๊ทธ) ์ ํ์ ๋ฐ ์์ฌ(๊ฐ์)์์
- class ์ ํ์, ์์ฑ ์ ํ์, ์์ฌ(๊ฐ์) ์ ํ์
- id ์ ํ์
- inline CSS
โ ๏ธ !important
: important๋ฅผ ์ด๊ธฐ๋ ค๋ฉด ๋ ๋ง์ ์์์ ๊ฒฐํฉํ ๋ค important๋ฅผ ์ ์ธํด์ผ ํ๋๋ฐ ์๋ชป๋ ๊ฒฝ์ฐ important ์ง์ฅ์ ๋น ์ง ์ ์์ด์ ์ง์ํ๋๋ก..!!
๋จ์
๊ณ ์ ๋จ์ (์์์ ์ฌ์ฉ X)
- px
- ๋ณดํต ์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ํฐํธ๋ 16px
- pt (ํฌ์ธํธ)
์๋ ๋จ์ (์์์ ๋จ์ ์ฌ์ฉ ๊ฐ๋ฅ)
- em
- ์์์ ๊ธ๊ผด ํฌ๊ธฐ์ ์๋์ ์ธ ๋จ์
- ํฉ์ฑ ๊ฐ
- line-height, letter-spacing ์์ฑ์ ์ฃผ๋ก ์ฐ์ธ๋ค.
div { font-size: 16px; padding: 1em; } /* padding 16px */
div p { font-size: 2em; } /* font-size 32px */
div p span { font-size: 2em; } /* (16px*2em)*2em = 64px */
- rem
- ํฉ์ฑ์ ํํผํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋จ์
- r(root) ๊ธฐ์ค (=> html ํ๊ทธ)
- ๋ ์ด์์ ์์ ์ ๋ง์ด ์ฐ์ธ๋ค.
div { font-size: 16px; padding: 1rem; } /* padding 16px */
div p { font-size: 2rem; } /* font-size 32px */
div p span { font-size: 2rem; } /* font-size 32px */
- %
- ๋ถ๋ชจ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ ์ผ๋ก ๋ฐฑ๋ถ์จ
div { font-size: 32px; }
p { font-size: 50%; } /* font-size: 16px */
- vw
- Viewport Width
- ํ๋ฉด์ ๋๋น์ ๋ฐ๋ผ ๊ฒฐ์
- 1vw = 1%, 100vw = 100%
- vh
- Viewport Height
- ํ๋ฉด์ ๋์ด์ ๋ฐ๋ผ ๊ฒฐ์
- vmin / vmax
- ํ๋ฉด์์ ๊ฐ์ฅ ์์/ํฐ ํฌ๊ธฐ ๊ธฐ์ค
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ๋ก 1000px, ์ธ๋ก 100px์ธ ๊ฒฝ์ฐ => 100vmin = 100px / 100vmax = 1000px
๊พธ๋ฏธ๊ธฐ
๊ธ๊ผด
- font-size: ๊ธ์ ํฌ๊ธฐ ๋ณ๊ฒฝ
- font-family: ๊ธ์จ์ฒด ๋ณ๊ฒฝ
- ์์ ํฐํธ๊ฐ ์ง์ํ์ง ์๋ ๋ฌธ์๊ฐ ๋ํ๋๋ฉด ๊ทธ ๋ค ํฐํธ ์ ์ฉ
- ๋ง์ง๋ง์ 'sans-serif'๋ 'serif'๋ฅผ ์์ฑํด์ ๋ชจ๋ OS์ ๊ณตํต ์ฌ์ฉ๋๋ ์ธ๋ฆฌํ์ฒด๋ฅผ ์ถ๊ฐํด ๊ธ๊ผด์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ผ ํจ
/* ์ฃผ๋ก ์์ด ๊ธ์จ์ฒด๊ฐ ์์ ์ค๊ณ ๋ค์ ํ๊ธ ๊ธ์จ์ฒด */
div {
font-family: 'Tahoma', '๋ง์ ๊ณ ๋', 'sans-serif';
}
- font-weight: ๊ธ์ ๋๊ป ๋ณ๊ฒฝ
- ์ซ์๋ 100-900 (400 normal, 600 bold)
- ๋ฌธ์ ํ๊ธฐ๋ normal, bold
- ๋ถ๋ชจ ์์์ ์๋์ ํฌ๊ธฐ (lighter, bolder)
- color: ๊ธ์ ์ ๋ณ๊ฒฝ
- ํค์๋ (red, blue...)
- RGB ํจ์ํ (rgb(255, 255, 0))
- RGB 16์ง์(HEX ์ฝ๋) (#ffffff)
- text-align: ๊ธ์ ๊ฐ๋ก ์ ๋ ฌ ๋ณ๊ฒฝ
- line-height: ์ค ๊ฐ๊ฒฉ ๋ณ๊ฒฝ
- letter-spacing: ์๊ฐ ๋ณ๊ฒฝ
- normal ๊ธฐ๋ณธ
- ๋ณดํต em ๋จ์ ์ฌ์ฉํด์ ๋ถ๋ชจ ํฐํธ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฐ์ด ์กฐ์ ํ๊ฒ ๋จ
๋ฐฐ๊ฒฝ
- background-color: ๋ฐฐ๊ฒฝ์
- background-image: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง
- url('์ด๋ฏธ์ง ๊ฒฝ๋ก')
- background-repeat: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ๋ฐ๋ณต
- repeat: ๋ฐ๋ณต(๊ธฐ๋ณธ๊ฐ)
- repeat-x / repeat-y: x/y์ถ ๋ฐ๋ณต
- round: ๋ฐ๋ณต๋๋ ์ด๋ฏธ์ง๊ฐ ์๋ฆฌ์ง ์๊ฒ ๋๋ ค์/์ค์ฌ์ ๋ฐ๋ณต
- space: ์ด๋ฏธ์ง๊ฐ ์๋ฆฌ์ง ์๊ฒ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐ
- no-repeat: ๋ฐ๋ณต X
- background-size: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ํฌ๊ธฐ ์กฐ์
- ๋๋น ๋์ด (๋จ์ผ ๊ฐ๋ง ์ ๋ ฅํ๋ฉด ๋๋น ์กฐ์ )
- contain: ์ด๋ฏธ์ง๊ฐ ๋ถ๋ชจ ํฌ๊ธฐ์ ๋ง๊ฒ ๋น์จ์ ๋ง์ถฐ ์์์ ๋ง์ถฐ์ง
- cover: ์ด๋ฏธ์ง์ ์ ์ผ ์์ ํฌ๊ธฐ๊ฐ ๋ถ๋ชจ์ ํฌ๊ธฐ์ ๋น์จ์ ๋ง์ถฐ์ง๊ณ ๋๋จธ์ง ์์ญ์ ์๋ผ๋ธ๋ค.
- background-position: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์์น ์ ์ด
- ํค์๋ top, right, bottom, left, center
- CSS ๋จ์ (10px 20px => x์ถ y์ถ)
- ํค์๋ ์ ์ดํ ๋ offset ์ง์ ๊ฐ๋ฅ right 10px center
- background
- ์์ ์์ฑ์ ํ๋ฒ์ ์์ฑํ ์ ์๋ ๋จ์ถ ์์ฑ
- ์์ฑ ์์๋ ์๊ด์ด ์์ผ๋, ์์น/ํฌ๊ธฐ๋ ๊ท์น์ ๋ง๊ฒ ํจ๊ป ์์ฑ๋ผ์ผ ํ๋ค.
div {
background: red url('์ด๋ฏธ์ง ๊ฒฝ๋ก') no-repeat right 15px center / contain;
}
๋ง๋ฌด๋ฆฌ
CSS ๊ฐ์๋ ๋ฃ๊ณ ๋ผ์ด๋ธ ํน๊ฐ๋ ๋ค์๋ค.
์ญ์ ๋ผ์ด๋ธ ํน๊ฐ์ด ์ง์ค์ด ๋ ์๋๋ค. ์ ์ตํ ๋ด์ฉ๋ ๋ง์์ ์ข์๋ค.
์ ์ ๊ฐ์ ๋ด์ฉ์ด ๋ง์์ ธ์ ์ ๋ฆฌํ๋ ๋ฐ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ์ง๋ง..ใ
๋์ค์ ๊ธฐ์ต ์๋ ๋ ์ฐพ์ ๋ณด๊ธฐ๋ ํธํ ๊ฒ ๊ฐ๊ณ ๋ฏธ๋๋ฅผ ์ํ ์ผ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ด์ฌํ ์์ฑํด์ผ๊ฒ ๋ค.
๋ด์ผ ๊ฐ์ ๋๋๋ฉด ์ผ์ฃผ์ผ ๋ฐฉํ์ธ๋ฐ ์์ฐจ๊ฒ ๋ณด๋ผ ์ ์๋ ๊ณํ๋ ์ธ์๋ด์ผ๊ฒ ๋ค.
