HTML๊ณผ CSS๋ ์ด์ฉ์์ ๋์์ ๋ฐ๋ฅธ ๋ณํ๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฉด์ ๋ฐ์ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์์ ์์ ์ปค์๋ฅผ ์ฌ๋ ค ๋๊ฑฐ๋ ๋์ ๋์ฒ๋ผ ์์ฃผ ๊ตฌํํ ํ์์ฑ์ด ์๋ ๋์ ์ผ๋ถ๋ ๊ฐ์ ํด๋์ค๋ ์์์ ํํ๋ก ์ ๊ณตํ๊ธฐ๋ ํ๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ๊ฐ์ ํด๋์ค์ ์์์ ๋ํด ์์๋ณด๊ณ , ์ฌ๋ฌ ์ ํ์๊ฐ ํ ์์๋ฅผ ๊พธ๋ฉฐ์ค ๋ ์ฐ์ ์์๋ฅผ ํ๊ธฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ตฌ์ฒด์ฑ์ ์ ์์ ๋ํด ์์๋ณธ๋ค. <ํด๋น ํฌ์คํธ๋ ๋น์ ๊ณต์๋ฅผ ์ํ HTML/CSS ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ค>
๊ฐ์ ํด๋์คpseudo class
์๋ฅผ ๋ค์ด, <p>๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. ์ด <p>์ ๋ง์ฐ์ค ์ปค์๋ฅผ ์ฌ๋ ธ์ ๋๋ง ํน์ ์คํ์ผ์ ์ฃผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ํด๋น ๋์์ ์ํด ๊ตฌํํด์ผ ํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
(1) ์์์ ํด๋์ค ์ ํ์๋ฅผ ์ ์ธํด ํน์ ์คํ์ผ ๊ท์น์ ๋ง๋ ๋ค.
(2) <p> ์์์ ์ปค์๊ฐ ์ฌ๋ผ๊ฐ๋ฉด ํด๋์ค๋ฅผ ์ง์ด๋ฃ๋๋ค.
(3) <p> ์์์์ ์ปค์๊ฐ ๋น ์ง๋ฉด ํด๋์ค๋ฅผ ์ญ์ ํ๋ค.
์ด๋ฐ ํํ์ ๊ธฐ๋ฅ์ HTML๊ณผ CSS์์๋ ๋ง๋ค์ด ๋ด๊ธฐ ์ด๋ ต๋ค. 2, 3๋ฒ์ ๋์ ์ผ๋ก ๋ณํ๋ผ์ผ ํ๋ ๋ถ๋ถ์ธ๋ฐ, ๋ ์ธ์ด๋ ์ ์ ์ธ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ถ๋ถ์ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ CSS์์๋ ํํ๊ฒ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ํจํด์ ๋ํด ๋ฏธ๋ฆฌ ์ ์ํด ๋๊ณ ์ด๋ฅผ ๊ฐ์ ํด๋์ค ํํ๋ก ์ ์ดํ ์ ์๊ฒ ํ๋ค.
:pseudo-class {
property: value;
}
๊ฐ์ ํด๋์ค์ ๊ธฐ๋ณธํ์ ์์ ๊ฐ๋ค. ๊ฐ์ ํด๋์ค๋ฅผ ์ด์ฉํ๋ฉด, ๋ค๋ฅธ ์ธ์ด๋ฅผ ๋์ด์ค์ง ์๊ณ ๋ CSS ๋ด์์ ๋์ ์ธ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ฏ๋ก ํจ์ฌ ํจ์จ์ ์ด๋ค. ์๋๋ถํฐ๋, ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ ํด๋์ค์ ์ ํ์ ๋ํด ๋ค๋ฃฌ๋ค.
๋ฌธ์ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ๊ฐ์ ํด๋์ค
first-child : ์ฒซ ๋ฒ์งธ ์์ ์์ ์ ํ.
last-child : ๋ง์ง๋ง ์์ ์์ ์ ํ.
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
li:first-child { color: red; }
li:last-child { color: blue; }
ํด๋น ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์ <li>์ ๋ง์ง๋ง <li>์ ๊ฐ๊ฐ ์์์ด ์ ์ฉ๋๋ค. ์ฆ, ๊ฐ์ ์ ํ์๋ก ์์ ๊ฐ์ด ๊ตฌํํ ์ฝ๋๋ ์๋ ์ฝ๋์ฒ๋ผ ๊ฐ์ ์ ํ์ ์์ด ๊ตฌํ๋ ์๋ ์๋ค.
<ul>
<li class="first-child">HTML</li>
<li>CSS</li>
<li class="last-child">JS</li>
</ul>
์ต์ปค ์์์ ๊ด๋ จ๋ ๊ฐ์ ํด๋์ค
:link : ํ์ดํผ ๋งํฌ์ด๋ฉด์ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ต์ปค.
:visited : ์ด๋ฏธ ๋ฐฉ๋ฌธํ ํ์ดํผ๋งํฌ๋ฅผ ์๋ฏธ.
a:link { color: blue; }
a:visited { color: gray; }
์ฌ์ฉ์ ๋์๊ณผ ๊ด๋ จํ ๊ฐ์ ํด๋์ค
์ด๊ฒ๋ค๋ ์ฃผ๋ก <a>์ ๋ง์ด ์ฐ์ธ๋ค. ๋ค๋ง ์ต์ปค ๊ด๋ จ ํด๋์ค์ ๋ฌ๋ฆฌ ์กฐ๊ฑด๋ง ๋ง์ผ๋ฉด ๋ค๋ฅธ ์์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
focus: ํ์ฌ ์
๋ ฅ ์ด์ ์ ๊ฐ์ง ์์์ ์ ์ฉ
hover: ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ์๋ ์์์ ์ ์ฉ
active: ์ฌ์ฉ์ ์
๋ ฅ์ผ๋ก ํ์ฑํ๋ ์์์ ์ ์ฉ
a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }
๊ฐ์ ์์ pseudo element
::pseudo-element {
property: value;
}
๊ฐ์ ํด๋์ค์ฒ๋ผ ๋ฌธ์ ๋ด์ ๋ณด์ด์ง ์์ง๋ง ๋ฏธ๋ฆฌ ์ ์ํ ์์น์ ์ฝ์ ๋๋๋ก ์ฝ์๋์ด ์๋ ๊ฒ์ผ๋ก, ๊ฐ์ ์์๊ฐ ์๋ค. ๊ฐ์ ์์๋ฅผ ์ฌ์ฉํ๋ฉด HTML ์ฝ๋์ ์กด์ฌํ์ง ์๋ ๊ตฌ์กฐ ์์์ ์คํ์ผ์ ๋ถ์ฌํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ํด๋์ค์ ๋์ผํ๊ฒ ์ฝ๋ก ์ผ๋ก ์ ์ธํ์ผ๋, CSS3๋ถํฐ๋ ๊ฐ์ ํด๋์ค์์ ๊ตฌ๋ถ์ ์ํด ::(๋๋ธ ์ฝ๋ก ) ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๊ฐํธ๋๋ค. ๋ค๋ง ํ์ ๋ธ๋ผ์ฐ์ ์์ :: ๋ฌธ๋ฒ์ ์ง์ํ์ง ์๋ ๋ฌธ์ ๊ฐ ์์ ์ ์๊ณ ์ด ๋๋ ; ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
before : ๊ฐ์ฅ ์์ ์์๋ฅผ ์ฝ์
.
after : ๊ฐ์ฅ ๋ค์ ์์๋ฅผ ์ฝ์
.
first-line : ์์์ ์ฒซ ๋ฒ์งธ ์ค์ ์๋ ํ
์คํธ.
first-letter : ๋ธ๋ก ๋ ๋ฒจ ์์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์.
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }
before์ after ๊ฐ์ ์์๋ ์ ์ด์ ๋ด์ฉ์ด ์๋ ์ํ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ด์ฉ์ ๋ฃ๊ธฐ ์ํด์๋ content ์์ฑ์ ์ด์ฉํด์ผ ํ๋ค. ๋์ ๋ณด์ด์ง ์๋ ์์๋ฅผ ๊ตฌ์ฒดํํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
<p>
<first-letter>L</first-letter>orem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<p>
<!-- ๋ชจ๋ํฐ ๊ฐ๋ก ํด์๋์ ๋ฐ๋ผ ์์๊ฐ ํฌํจํ๋ ๋ด์ฉ์ด ๋ณ๋๋ฉ๋๋ค. -->
<first-line>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiu ..(..์ด๋๊ฐ์ฏค..) </first-line>... unt ut labore et dolore magna aliqua.
</p>
์ ์ธ์ ๊ตฌ์ฒด์ฑ
h1 { color: red; }
body h1 { color: green; }
์์๋ฅผ ์ ํํ๋ ๋ฐ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ์ ํ์๋ฅผ ์ด์ฉํด ๊ฐ์ ์์๋ฅผ ์ ํํ ์๋ ์๋ค. ์ ์ฝ๋์์, ๋ ๊ท์น์ ๋ชจ๋ <h1>์ ์ง์ ํ์ง๋ง ๋ ๊ท์น์ด ์ง์ ํ๋ ์คํ์ผ์ ์๋ก ๋ค๋ฅด๋ค. ์ด๋ด ๋ <h1>์ ์ด๋ป๊ฒ ํํ๋ ๊น.
์ ํ์์๋ ์ด๋ค ๊ท์น์ด ์ฐ์ ์ผ๋ก ์ ์ฉ๋ผ์ผ ํ๋์ง์ ๋ํด ์ ํด์ง ๊ท์น์ด ์๋ค. ์ด ๊ท์น์ '๊ตฌ์ฒด์ฑ'์ด๋ผ๊ณ ํ๋ค. ๊ตฌ์ฒด์ฑ์ ์ ํ์๋ฅผ ์ผ๋ง๋ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋๋๋ฅผ ์์นํํ ๊ฒ์ผ๋ก, ๊ตฌ์ฒด์ฑ์ ๊ฐ์ด ํด ์๋ก ์ฐ์ ์ผ๋ก ์ ์ฉ๋๋ค.
0, 0, 0, 0
๊ตฌ์ฒด์ฑ์ ์์ ๊ฐ์ด ๋ค ๊ฐ์ ์ซ์ ๊ฐ์ผ๋ก ์ด๋ค์ ธ ์๋ค. ๊ฐ์ ๋น๊ตํ ๋๋ ์ข์ธก์ ์๋ ๊ฐ๋ถํฐ ๋น๊ตํ๋ฉฐ, ์ข์ธก ๋ถ๋ถ์ ์ซ์๊ฐ ํด ์๋ก ๋์ ๊ตฌ์ฒด์ฑ์ ๊ฐ๋๋ค. ๊ตฌ์ฒด์ฑ์ ์๋์ ๊ท์น๋๋ก ๊ณ์ฐ๋๋ค.
0, 1, 0, 0 : ์ ํ์์ ์๋ ๋ชจ๋ id ์์ฑ๊ฐ
0, 0, 1, 0 : ์ ํ์์ ์๋ ๋ชจ๋ class ์์ฑ๊ฐ, ๊ธฐํ ์์ฑ, ๊ฐ์ ํด๋์ค
0, 0, 0, 1 : ์ ํ์์ ์๋ ๋ชจ๋ ์์, ๊ฐ์ ์์
0, 0, 0, 0 : ์ ์ฒด ์ ํ์
h1 { ... } /* 0,0,0,1 */
body h1 { ... } /* 0,0,0,2 */
.grape { ... } /* 0,0,1,0 */
*.bright { ... } /* 0,0,1,0 */
p.bright em.dark { ... } /* 0,0,2,2 */
#page { ... } /* 0,1,0,0 */
div#page { ... } /* 0,1,0,1 */
์ธ๋ผ์ธ ์คํ์ผ
p#page { color: red; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
์ ๋ ์คํ์ผ ์ ์ธ๋ฌธ์ ๋ณด์. ์ ์๋ 0, 1, 0, 1์ ๊ตฌ์ฒด์ฑ์ ๊ฐ์ง๋ ์ ํ์๋ก ์คํ์ผ์ ์ ์ธํ ๊ฒ์ด๊ณ ๋ ๋ฒ์งธ๋ ์์์ ์ง์ ์ธ๋ผ์ธ ์คํ์ผ ๋ฐฉ์์ผ๋ก ์ ์ธํ ๊ฒ์ด๋ค. ๋ ์ค ๋ฌด์์ด ์ฐ์ ์์๋ก ์ ์ฉ๋ ๊น? ์ ๋ต์ ํ์๋ค. ์ธ๋ผ์ธ ์คํ์ผ์ ๊ตฌ์ฒด์ฑ ๊ฐ์ 1, 0, 0, 0์ด๋ฉฐ ๊ท์น๋ค ์ค ๊ฐ์ฅ ํฐ ๊ตฌ์ฒด์ฑ์ ๊ฐ๋๋ค.
๊ท์น์ ์ฐ์ ๊ถ ์ ์ฉํ๊ธฐ, important
p#page { color: red !important; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
important ํค์๋๋ ๋ณ๋์ ๊ตฌ์ฒด์ฑ ๊ฐ์ ์์ง๋ง ๋ชจ๋ ๊ตฌ์ฒด์ฑ์ ๋ฌด์ํ๊ณ ์ฐ์ ๊ถ์ ๊ฐ๋๋ค. ์์ฑ๊ฐ ๋ค์ ํ ์นธ ๊ณต๋ฐฑ์ ์ฃผ๊ณ ๋๋ํ ๊ธฐํธ์ ํจ๊ป ์ฐ๋ฉด important๋ฅผ ์ ์ฉํ ์ ์๋ค. ์์ <p>์๋ important๋ก ์ธํด color: red๊ฐ ์ ์ฉ๋๋ค.
์์ฑ์ ์์
h1 { color: gray; }
<h1>Hello, <em>CSS</em></h1>
์ ์ฝ๋์์ <em>์ ๋ถ๋ชจ์ธ <h1>์ color: grey๋ฅผ ์์๋ฐ๋๋ค. ๋ค๋ง, ๋ชจ๋ ๋ถ๋ชจ์ ์์ฑ์ด ์์์๊ฒ ์์๋๋ ๊ฑด ์๋๋ค. ์์์ ์ผ๋ก ๊ตฌ๋ถ๋ ๋งํ ์์ฑ ์ธ, margin/ padding/ background/ border ๋ฑ์ ์์๋์ง ์๋๋ค.
์์ ์์ฑ์ ๊ตฌ์ฒด์ฑ
* { color: red; }
h1#page { color: gray; }
<h1 id="page">Hello, <em>CSS</em></h1>
์ ์ฝ๋์์, <em>์๋ color: red๊ฐ ์ ์ฉ๋๋ค. ์์๋ ์์ฑ์ ๊ตฌ์ฒด์ฑ์ ๊ฐ์ง์ง ๋ชป ํ๋ ์ ์ ๊ธฐ์ตํ์.
'TOOLS > Frontend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CSS ๋ฌธ๋ฒ (2) : ์ ํ์์ ์ ํ ๋ฐ ์กฐํฉ, ๋ฌธ์ ๊ตฌ์กฐ์ ์ดํด (0) | 2024.03.11 |
---|---|
CSS ๋ฌธ๋ฒ (1) : CSS์ ์ ์, HTML์์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ (0) | 2024.03.10 |
HTML ์์๋ณ ๋ฌธ๋ฒ ํ๊ทธ ์ ๋ฆฌ (0) | 2024.03.10 |