CSS
CSS๋ ์น ํ์ด์ง ์คํ์ผ ๋ฐ ๋ ์ด์์์ ์ ์ํ๋ ์คํ์ผ์ํธ ์ธ์ด์ด๋ค. ์ง๊ธ๊น์ง ํ์ตํ HTML๋ก ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ์ ์ธ์ฐ๊ณ ๋์, ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ(UX, user experience)์ ์ ๊ณตํ๊ธฐ ์ํด CSS๋ก UI ๋ฐ ๋ ์ด์์์ ์ ์ ํ ๊ตฌ์ฑํ๋ฉด ๋ฉ์ง ์น ํ์ด์ง๋ฅผ ์์ฑํ ์ ์๋ค.
์์์ผ ํ ๋จ์
- ์ ๋ ๋จ์ : px, pt, cm ๋ฑ...
* ํฝ์ (px)์ ๋ณด๊ธฐ ์ฅ์น์ ์๋์ ์ด๋ค. ๋ฎ์ dpi ์ฅ์น์ ๊ฒฝ์ฐ 1px์ ๋์คํ๋ ์ด์ ํ๋์ ์ฅ์น ํฝ์ (๋ํธ)์ด๋ค. ํ๋ฆฐํฐ ๋ฐ ๊ณ ํด์๋ ํ๋ฉด์ ๊ฒฝ์ฐ 1px๋ ์ฌ๋ฌ ์ฅ์น ํฝ์ ์ ์๋ฏธํ๋ค.
- ์๋ ๋จ์ : %, em, rem, ch, vw, vh ๋ฑ...
์๋ ๊ธธ์ด ๋จ์๋ ๋ค๋ฅธ ๊ธธ์ด ์์ฑ์ ์๋์ ์ธ ๊ธธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ์๋ ๊ธธ์ด ๋จ์๋ ์๋ก ๋ค๋ฅธ ๋ ๋๋ง ๋งค์ฒด ๊ฐ์ ๋ ์ ์กฐ์ ๋๋ค.
Tip : em ๋ฐ rem ๋จ์๋ ์๋ฒฝํ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ค์ฉ์ ์ด๋ค.
* Viewport = ๋ธ๋ผ์ฐ์ ์ฐฝ ํฌ๊ธฐ. ๋ทฐํฌํธ์ ๋๋น๊ฐ 50cm์ด๋ฉด 1vw = 0.5cm์
๋๋ค
๊ธ๊ผด ์ฌ์ด์ฆ๋ฅผ ์ ํ ๋
- ๊ธฐ๊ธฐ๋ ๋ธ๋ผ์ฐ์ ์ฌ์ด์ฆ ๋ฑ์ ํ๊ฒฝ์ ์ํฅ์ ๋ฐ์ง ์๋ ์ ๋์ ์ธ ํฌ๊ธฐ๋ก ์ ํ๋ ๊ฒฝ์ฐ
px(ํฝ์ )์ ์ฌ์ฉํ๋ค. ํฝ์ ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋ ์ ๋ ๋จ์์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ๊ทผ์ฑ์ด ๋ถ๋ฆฌํ๋ค.
๊ธ๊ผด์ ํฌ๊ธฐ๋ฅผ ํฝ์ ๋ก ์ค์ ํ๋ฉด, ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ ํฌ๊ฒ ์ค์ ํ๋๋ผ๋ ๊ธ๊ผด์ ํฌ๊ธฐ๋ ํญ์ ์ค์ ๋ ํฝ์ ๋ก ๊ณ ์ ๋๋ค.
์ ๋ชฉ(heading)์ ๊ฐ์กฐํ๊ธฐ ์ํด ํฝ์ ์ ์ด์ฉํด ๊ธ๊ผด์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ผ๋ ์ฌ์ฉ์์ ํ๊ฒฝ์ ๋ฐ๋ผ ์ผ๋ฐ ํ ์คํธ๋ณด๋ค ์๊ฒ ๋ณด์ด๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํฝ์ ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ฒ๋ผ ์์ ํ๋ฉด์ด๋ฉด์, ๋์์ ๊ณ ํด์๋์ธ ๊ฒฝ์ฐ์๋ ์ ํฉํ์ง ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ ํด์๋์์๋ 1px์ด ๋ชจ๋ํฐ์ ํ ์ ๋ณด๋ค ํฌ๊ฒ ์ ์ค์ผ์ผ(upscale) ๋๊ธฐ ๋๋ฌธ์, ๋๋ ทํ์ง ๋ชปํ ํํ๋ก ์ถ๋ ฅ๋๋ ๊ฒฝ์ฐ๋ ์๋ค. ํฝ์ ์ ์ธ์์ ๊ฐ์ด ํ๋ฉด์ ์ฌ์ด์ฆ๊ฐ ์ ํด์ง ๊ฒฝ์ฐ์ ์ ๋ฆฌํ๋ค.
2. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ
์๋ ๋จ์์ธ rem์ ์ถ์ฒํ๋ค. root์ ๊ธ์ ํฌ๊ธฐ, ์ฆ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๊ธ์ ํฌ๊ธฐ๊ฐ 1rem์ด๋ฉฐ, ๋ ๋ฐฐ๋ก ํฌ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด 2rem, ์๊ฒ ํ๋ ค๋ฉด 0.8rem ๋ฑ์ผ๋ก ์กฐ์ ํด์ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ค์ ํ ๊ธฐ๋ณธ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก, ์ ๊ทผ์ฑ์ ์ ๋ฆฌํ๋ค. (em์ ๋ถ๋ชจ ์๋ฆฌ๋จผํธ์ ๋ฐ๋ผ ์๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋๋ฏ๋ก ๊ณ์ฐ์ด ์ด๋ ต๋ค. ์ด์ ๋นํด rem์ root์ ๊ธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ์๋ง ์๋์ ์ผ๋ก ๋ณํ๋ค.)
ํ๋ฉด ์ฌ์ด์ฆ๋ฅผ ์ ํ ๋
- ๋ฐ์ํ ์น(responsive web)์์ ๊ธฐ์ค์ ์ ๋ง๋ค ๋ ์๋ฅผ ๋ค์ด, ๋ฐ์คํฌํ์์ ๋ณผ ๋, ์ค๋งํธํฐ์์ ์ธ๋ก ๋ชจ๋๋ก ๋ณผ ๋, ๊ฐ๋ก ๋ชจ๋๋ก ๋ณผ ๋, ํ๋ธ๋ฆฟ์ผ๋ก ๋ณผ ๋๊ฐ ๊ฐ๊ฐ ๋ค๋ฅด๋ค. ์ด๋์๋ ๋๋ฐ์ด์ค ํฌ๊ธฐ๋ณ๋ก CSS๋ฅผ ๋ฌ๋ฆฌ ์ ์ฉํด์ผ ํ๋ค. ์ด๋, ๋๋ฐ์ด์ค ํฌ๊ธฐ๋ฅผ ๋๋๋ ๊ธฐ์ค์ ๋ณดํต px๋ก ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด iPhone 12 Pro Max์ ๋๋น๋ 414px ์ด๋ค. ๋ณดํต 450px ๋ฏธ๋ง์ ๋๋น๋ฅผ ๊ฐ๋ ๋๋ฐ์ด์ค๋ ์ค๋งํธํฐ ์ธ๋ก ๋ชจ๋๋ก ์๊ฐํด๋ ์ข๋ค.
- ํ๋ฉด ๋๋น๋ ๋์ด์ ๋ฐ๋ฅธ ์๋์ ์ธ ํฌ๊ธฐ๊ฐ ์ค์ํ ๊ฒฝ์ฐ์๋ vw, vh๋ฅผ ์ฌ์ฉํ์. ์น์ฌ์ดํธ์ ๋ณด์ด๋ ์์ญ์ Viewport๋ผ๊ณ ํ๋ค. vw, vh ๋ ๊ฐ๊ฐ viewport width์ viewport height๋ฅผ ๋ปํ๋ฉฐ, 1vw ๋ ๋ณด์ด๋ ์์ญ ๋๋น์ 1/100์, 1vh ๋ ๋ณด์ด๋ ์์ญ ๋์ด์ 1/100์ ๋ปํ๋ค. (์ฐธ๊ณ ๋ก <body> ํ๊ทธ์์์ %๋ HTML์ด ์ฐจ์งํ๋ ๋ชจ๋ ์์ญ, ์ฆ ์ง๊ธ์ ๋ณด์ด์ง ์์ผ๋ ์คํฌ๋กค ํ์ ๋ ๋ณด์ด๋ ์์ญ๊น์ง ํฌํจํ์ ๋ ๋น์จ)
์ ๋ ํฐ
์ ์ฒด ์ ๋ ํฐ
* { }
attribute ์ ๋ ํฐ
๊ฐ์ ์์ฑ์ ๊ฐ์ง ์์๋ฅผ ์ ํํ๋ค.
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }
์์ ์ ๋ ํฐ
์์ ์ ๋ ํฐ๋ ์ฒซ ๋ฒ์งธ๋ก ์ ๋ ฅํ ์์์ ๋ฐ๋ก ์๋ ์์์ธ ์์๋ฅผ ์ ํํ๋ค. ์๋ ์์์ ๊ฒฝ์ฐ <header> ์์ ๋ฐ๋ก ์๋์ ์๋ ๋ ๊ฐ์ <p> ์์๋ ์ ํ๋์ง๋ง, <span> ์์์ ์์์ธ <p> ์์๋ ์ ํ๋์ง ์๋๋ค.
header > p { }
์์)
<header>
<p> <!-- ์ ํ -->
<span>
<p></p>
</span>
</p>
<p> <!-- ์ ํ -->
<span>
<p></p>
</span>
</p>
</header>
ํ์์ ๋ ํฐ
ํ์ ์ ๋ ํฐ๋ ์ฒซ ๋ฒ์งธ๋ก ์ ๋ ฅํ ์์์ ํ์๊น์ง ์ ํํ๋ค. ์๋ ์์์ ๊ฒฝ์ฐ <header> ์์์ ์์์ธ <p> ์์๋ฟ ์๋๋ผ, <header> ์์์ ์์์ ์์์ธ <p> ์์๊น์ง ๋ชจ๋ ์ ํ๋๋ค.
header p { }
ํ์ ์ ๋ ํฐ
ํ์ ์ ๋ ํฐ๋ ๊ฐ์ ๋ถ๋ชจ ์์๋ฅผ ๊ณต์ ํ๋ฉด์, ์ฒซ ๋ฒ์งธ ์ ๋ ฅํ ์์ ๋ค์ ์ค๋ ๋ ๋ฒ์งธ ์ ๋ ฅํ ์์๋ฅผ ๋ชจ๋ ์ ํํ๋ค.
header ~p { }
์ธ์ ํ์ ์ ๋ ํฐ
์ธ์ ํ์ ์ ๋ ํฐ๋ ๊ฐ์ ๋ถ๋ชจ ์์๋ฅผ ๊ณต์ ํ๋ฉด์, ์ฒซ ๋ฒ์งธ ์ ๋ ฅํ ์์ ๋ฐ๋ก ๋ค์ ์ค๋ ๋ ๋ฒ์งธ ์ ๋ ฅํ ์์๋ฅผ ์ ํํ๋ค.
header +p { }
<header>
<section></section>
<p></p> <!-- ์ ํ -->
<p></p>
<p></p>
</header>
๊ฐ์ ํด๋์ค ์ ๋ ํฐ
๊ฐ์ ํด๋์ค๋ ์์์ ์ํ ์ ๋ณด์ ๊ธฐ๋ฐํด ์์๋ฅผ ์ ํํ๋ค.
a:link { } /*์ฌ์ฉ์๊ฐ ๋ฐฉ๋ฌธํ์ง ์์ <a>์์๋ฅผ ์ ํ*/
a:visited { } /*์ฌ์ฉ์๊ฐ ๋ฐฉ๋ฌธํ <a>์์๋ฅผ ์ ํ */
a:hover { } /* ๋ง์ฐ์ค๋ฅผ ์์ ์์ ์ฌ๋ ธ์ ๋ ์ ํ */
a:active { } /* ํ์ฑํ ๋(ํด๋ฆญ๋) ์ํ์ผ ๋ ์ ํ */
a:focus { } /* ํฌ์ปค์ค๊ฐ ๋ค์ด์ ์์ ๋ ์ ํ */
UI ์์ ์ํ ์ ๋ ํฐ
input:checked + span { } /*์ฒดํฌ ์ํ์ผ ๋ ์ ํ. */
input:enabled + span { } /*์ฌ์ฉ ๊ฐ๋ฅํ ์ํ์ผ ๋ ์ ํ */
input:disabled + span { } /*์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ์ํ์ผ ๋ ์ ํ*/
๊ตฌ์กฐ ๊ฐ์ ํด๋์ค ์ ๋ ํฐ
p:first-child { } // p ํ๊ทธ๊ฐ ์ฒซ๋ฒ์งธ ์์์ด๋ฉด
ul > li:last-child { } // ul ์์์์ li๊ฐ ๋ง์ง๋ง ์์์ด๋ฉด
ul > li:nth-child(2n) { } // ul ์์์์ li๊ฐ ์ง์ ์์์ด๋ฉด
section > p:nth-child(2n+1) { } // section ์์์์ p๊ฐ ํ์ ์์์ด๋ฉด
ul > li:first-child { } // ul ์์ ์ค li๊ฐ ์ฒซ๋ฒ์งธ ์์์ด๋ฉด
li:last-child { } //li ๊ฐ ๋ง์ง๋ง ์์์ด๋ฉด
div > div:nth-child(4) { } // div ์์ ์ค div ํ๊ทธ๊ธฐ 4๋ฒ์งธ ์์์ด๋ฉด
div:nth-last-child(2) { } // divํ๊ทธ ์ค ๋ง์ง๋ง์์ ์์ํ๋ 2๋ฒ์งธ ์์์ด๋ฉด
section > p:nth-last-child(2n + 1) { } // section ์์ p ์ค ๋ง์ง๋ง์์ ์์ํ๋ ํ์ ์์์ด๋ฉด
p:first-of-type { } // p ์์ ์ค ์ฒซ๋ฒ์งธ ์์
div:last-of-type { } // div์์ ์ค ๋ง์ง๋ง ์์
ul:nth-of-type(2) { } // ul ์์ ์ค 2๋ฒ์งธ ์์
p:nth-last-of-type(1) { } // p ์์ ์ค ๋ง์ง๋ง์์ ์ฒซ๋ฒ์งธ
'๐ FrontEnd -Study > HTML, CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] em / rem (0) | 2023.02.18 |
---|---|
TIL - [HTML/CSS ๊ธฐ์ด] (0) | 2023.02.16 |
[HTML ๊ธฐ์ด] (0) | 2023.02.14 |
css/ initial vs inherit vs unset (0) | 2022.12.10 |
css/list sytle type (0) | 2022.12.10 |
๋๊ธ