์ ํํ ํ ์คํธ ์ ํ ์คํ์ผ๋ง์ ์ํ CSS ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋๋ฅผ ๋ง์คํฐํ์ธ์. ::selection, ::highlight, ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ์ ์์ ์ ์ฐ์ ์์ ๊ท์น์ ์์๋ณด์ธ์.
CSS ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋: ํ ์คํธ ์ ํ ์ฐ์ ์์ ๊ด๋ฆฌ
์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ํ
์คํธ ์ ํ ํ์ด๋ผ์ดํธ๋ ๋ณดํต ํฐ์ ํ
์คํธ์ ํ๋์ ๋ฐฐ๊ฒฝ์
๋๋ค. ๊ธฐ๋ฅ์ ์ด๊ธด ํ์ง๋ง, ์น์ฌ์ดํธ์ ๋ธ๋๋ฉ์ด๋ ์ ๊ทผ์ฑ ์๊ตฌ์ฌํญ๊ณผ ๋ง์ง ์์ ์ ์์ต๋๋ค. ๋คํํ CSS๋ ํ
์คํธ ์ ํ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ๋ง๋ค ์ ์๊ฒ ํด์ค๋๋ค. ์ด ๊ธ์์๋ CSS ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋๋ฅผ ๊น์ด ํ๊ณ ๋ค์ด, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ ๊ธฐ์ ๊ณผ ์ํ๋ ํจ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ์ฐ์ ์์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํ์ํฉ๋๋ค. ํ์ค ::selection ์์ฌ ์์, ๋ ๋ฐ์ ๋ ::highlight ์์ฌ ์์, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ฉฐ, ์ด๋ค์ ๋์์ ์ง๋ฐฐํ๋ ์บ์ค์ผ์ด๋์ ๋ช
์๋ ๊ท์น์ ์ด์ ์ ๋ง์ถ ๊ฒ์
๋๋ค.
๊ธฐ๋ณธ ์ดํดํ๊ธฐ: ::selection ์์ฌ ์์
::selection ์์ฌ ์์๋ CSS์์ ํ
์คํธ ์ ํ ์คํ์ผ๋ง์ ๊ธฐ์ด์
๋๋ค. ์ด๋ฅผ ํตํด ์์ ๋ด์์ ์ ํ๋ ํ
์คํธ์ ๋ชจ์์ ์์ ํ ์ ์์ต๋๋ค. ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฆฌ ์ง์๋๋ฉฐ, ์ ํ๋ ํ
์คํธ์ ๋ฐฐ๊ฒฝ์, ํ
์คํธ ์์ ๋ฐ ๊ธฐํ ๊ธฐ๋ณธ ์์ฑ์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
::selection์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
::selection์ ์ฌ์ฉํ๋ ค๋ฉด CSS ๊ท์น์ผ๋ก ํด๋น ์์๋ฅผ ํ๊ฒํ
ํ๊ณ ์ํ๋ ์คํ์ผ์ ์ ์ํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ
์คํธ๊ฐ ์ ํ๋์์ ๋ ๋ฐฐ๊ฒฝ์์ ๋
ธ๋์์ผ๋ก, ํ
์คํธ ์์์ ๊ฒ์์์ผ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์ CSS๋ฅผ ์ฌ์ฉํฉ๋๋ค:
::selection {
background-color: yellow;
color: black;
}
์ด ๊ท์น์ ์น์ฌ์ดํธ ์ ์ฒด์ ๋ชจ๋ ํ ์คํธ ์ ํ์ ์ ์ฉ๋ฉ๋๋ค. ํน์ ์์๋ฅผ ํ๊ฒํ ํ๊ณ ์ถ๋ค๋ฉด ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
p::selection {
background-color: lightgreen;
color: darkgreen;
}
์ด ๊ท์น์ <p> (๋ฌธ๋จ) ์์ ๋ด์ ํ
์คํธ ์ ํ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
::selection์ ํ๊ณ
::selection์ ์ ์ฉํ ๋๊ตฌ์ด์ง๋ง ํ๊ณ๊ฐ ์์ต๋๋ค. ์ฃผ๋ก background-color์ color์ ๊ฐ์ ๊ธฐ๋ณธ ์์ฑ๋ง ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ผ๋ฐ์ด์
์ด๋ ๊ทธ๋ฆผ์๋ฅผ ์ ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ ๋ณต์กํ ์คํ์ผ๋ง ์ต์
์ ์ง์ ์ ์ผ๋ก ์ง์๋์ง ์์ต๋๋ค. ๋ํ, ::selection์ ๋ค๋ฅธ ์คํ์ผ์ ๊ฐ์ง ์ฌ๋ฌ ๊ฒน์น๋ ํ์ด๋ผ์ดํธ๋ฅผ ์์ฑํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ::highlight ์์ฌ ์์๊ฐ ๋ฑ์ฅํฉ๋๋ค.
::highlight ์๊ฐ: ๋ ๊ฐ๋ ฅํ ๋์
::highlight ์์ฌ ์์๋ CSS์ ๋น๊ต์ ์ต๊ทผ์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ผ๋ก, ํ
์คํธ ์ ํ ํ์ด๋ผ์ดํธ์ ๋ํด ๋ ํฐ ์ ์ฐ์ฑ๊ณผ ์ ์ด๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฆ์ด ์ง์ ๋ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ํ ์ ์๊ฒ ํ์ฌ, ์ ํ๋ ํ
์คํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ณต์กํ ๋ ์ด์์์ด๋ ์ ํ ์์ญ ๋ด์์ ๋ค๋ฅธ ์ ํ์ ์ฝํ
์ธ ๋ฅผ ๊ตฌ๋ณํด์ผ ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
highlight-name ์์ฑ์ผ๋ก ์ด๋ฆ์ด ์ง์ ๋ ํ์ด๋ผ์ดํธ ์ ์ํ๊ธฐ
::highlight๋ฅผ ์ฌ์ฉํ๋ ํต์ฌ์ highlight-name ์์ฑ์
๋๋ค. ์ด ์์ฑ์ ์ฌ์ฉํ๋ฉด ํน์ ํ์ด๋ผ์ดํธ์ ์ด๋ฆ์ ํ ๋นํ๊ณ , ์ด ์ด๋ฆ์ CSS ๊ท์น์ผ๋ก ํ๊ฒํ
ํ ์ ์์ต๋๋ค. ::highlight๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ด ์ง์ ๋ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค. CSS ์์ฒด๋ ์๋ก์ด ํ์ด๋ผ์ดํธ ์ด๋ฆ์ ์ ์ํ ์ ์๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ ์์ฑํ ํ์ด๋ผ์ดํธ๋ฅผ *์คํ์ผ๋ง*๋ง ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ค์์ ์์ ์
๋๋ค:
// JavaScript:
CSS.registerProperty({
name: '--my-custom-highlight',
syntax: '<color>',
inherits: false,
initialValue: 'transparent',
});
์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ --my-custom-highlight๋ผ๋ CSS ์ฌ์ฉ์ ์ ์ ์์ฑ์ ๋ฑ๋กํฉ๋๋ค. ์ด ์์ฑ์ ์์ ๊ฐ์ ๋ฐ์ผ๋ฉฐ ์์๋์ง ์์ต๋๋ค. ์ด๋ ํ์ด๋ผ์ดํธ๋ฅผ ์คํ์ผ๋งํ๊ธฐ ์ ์ ํ์ํ ๋จ๊ณ์
๋๋ค. ์ด์ CSS๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค:
::highlight(my-custom-highlight) {
background-color: rgba(255, 0, 0, 0.3);
color: white;
}
์ด CSS ๊ท์น์ "my-custom-highlight"๋ผ๋ ์ด๋ฆ์ ํ์ด๋ผ์ดํธ๋ฅผ ํ๊ฒํ
ํ์ฌ 30% ๋ถํฌ๋ช
๋์ ๋นจ๊ฐ์ ๋ฐฐ๊ฒฝ๊ณผ ํฐ์ ํ
์คํธ๋ฅผ ์ ์ฉํฉ๋๋ค. ํฌ๋ช
๋๋ฅผ ๊ตฌํํ๊ธฐ ์ํด rgba๋ฅผ ์ฌ์ฉํ ์ ์ ์ฃผ๋ชฉํ์ธ์. ์ด๋ฆ์ (`my-custom-highlight`์ฒ๋ผ) ์์ฑํ ๋ค์, CSS์์ `::highlight(my-custom-highlight)`๋ฅผ ํตํด ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
JavaScript๋ก ํ์ด๋ผ์ดํธ ์ ์ฉํ๊ธฐ
์ด์ ์น ํ์ด์ง์ ์ค์ ๋ก ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ฉํ๋ ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ด๋ผ์ดํธ๊ฐ ํ์ํ ํ ์คํธ ๋ถ๋ถ์ `` ํ๊ทธ๋ก ๊ฐ์ธ๊ณ `highlight-name` ์คํ์ผ์ ํ ๋นํ์ฌ ์ํ๋ฉ๋๋ค:
<p>This is some <span style="--highlight: my-custom-highlight;">important</span> text.</p>
์ด ์์ ์์ "important"๋ผ๋ ๋จ์ด๋ "my-custom-highlight"์ ๋ํด ์ ์๋ ์คํ์ผ๋ก ํ์ด๋ผ์ดํธ๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
<p>This is <span style="--highlight: warning-highlight;">a warning message</span> that needs attention.</p>
์ฌ๊ธฐ์ 'warning-highlight'๋ CSS.registerProperty๋ก ๋ฑ๋กํ๊ณ ::highlight(warning-highlight) CSS ๋ธ๋ก ๋ด์์ ์ฌ์ฉํ ์ด๋ฆ์ ํด๋นํฉ๋๋ค.
::highlight์ ์ฅ์
- ๋ค์ค ํ์ด๋ผ์ดํธ: ์ฌ๋ฌ ๊ฐ์ ์ด๋ฆ์ด ์ง์ ๋ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ํ๊ณ ํ ์คํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ธ๋ฐํ ์ ์ด: ํน์ ํ ์คํธ ์น์ ์ ๋ค๋ฅธ ํ์ด๋ผ์ดํธ ์คํ์ผ๋ก ํ๊ฒํ ํ ์ ์์ต๋๋ค.
- ์๋ฏธ๋ก ์ ํ์ด๋ผ์ดํ : ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ ๊ฒฝ๊ณ ๋ฅผ ๊ฐ์กฐํ๋ ๋ฑ ์๋ฏธ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
CSS ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋ ์ดํดํ๊ธฐ: ์ฐ์ ์์์ ๋ช ์๋
์ฌ๋ฌ ํ์ด๋ผ์ดํธ ์คํ์ผ์ด ๋์ผํ ํ ์คํธ์ ์ ์ฉ๋ ๋, ์ด๋ค ์คํ์ผ์ด ์ฐ์ ํ ์ง๋ CSS ์บ์ค์ผ์ด๋์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ์บ์ค์ผ์ด๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅธ CSS ๊ท์น ๊ฐ์ ์ถฉ๋์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ผ๋ จ์ ๊ท์น์ ๋๋ค. ์บ์ค์ผ์ด๋๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ๊ด๋ฆฌํ๊ณ ์ํ๋ ์คํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋๋๋ก ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ฐ์ ์์ ์์
CSS ์บ์ค์ผ์ด๋๋ ํน์ ์ฐ์ ์์ ์์๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฝํ ์ ์์ต๋๋ค (๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ถํฐ ๊ฐ์ฅ ๋์ ์์๋ก):
- ์ฌ์ฉ์ ์์ด์ ํธ ์คํ์ผ: ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ์คํ์ผ.
- ์ฌ์ฉ์ ์คํ์ผ: ์ฌ์ฉ์๊ฐ ์ ์ํ ์คํ์ผ (์: ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ํตํด).
- ์์ฑ์ ์คํ์ผ: ์น์ฌ์ดํธ ๊ฐ๋ฐ์๊ฐ ์ ์ํ ์คํ์ผ (์ฌ๋ฌ๋ถ์ CSS).
- !important ์์ฑ์ ์คํ์ผ: ์น์ฌ์ดํธ ๊ฐ๋ฐ์๊ฐ
!importantํค์๋๋ก ์ ์ํ ์คํ์ผ. - !important ์ฌ์ฉ์ ์คํ์ผ: ์ฌ์ฉ์๊ฐ
!importantํค์๋๋ก ์ ์ํ ์คํ์ผ.
์ด๋ฌํ ๊ฐ ์์ค ๋ด์์ ๋ช ์๋(specificity)๊ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ช ์๋๋ CSS ์ ํ์์ ๊ฐ์ค์น ๋๋ ์ค์๋๋ฅผ ๋ํ๋ ๋๋ค. ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๊ฐ ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ๋ฎ์ด์๋๋ค.
๋ช ์๋ ๊ท์น
๋ช ์๋๋ ๋ค์ ๊ท์น์ ๋ฐ๋ผ ๊ณ์ฐ๋ฉ๋๋ค:
- ์ธ๋ผ์ธ ์คํ์ผ:
style์์ฑ์ ์ฌ์ฉํ์ฌ HTML ์์์ ์ง์ ์ ์๋ ์คํ์ผ์ด ๊ฐ์ฅ ๋์ ๋ช ์๋๋ฅผ ๊ฐ์ง๋๋ค. - ID: ID๋ก ์์๋ฅผ ํ๊ฒํ
ํ๋ ์ ํ์(์:
#my-element)๋ ๋์ ๋ช ์๋๋ฅผ ๊ฐ์ง๋๋ค. - ํด๋์ค, ์์ฌ ํด๋์ค ๋ฐ ์์ฑ: ํด๋์ค(์:
.my-class), ์์ฌ ํด๋์ค(์::hover) ๋๋ ์์ฑ(์:[type="text"])์ผ๋ก ์์๋ฅผ ํ๊ฒํ ํ๋ ์ ํ์๋ ์ค๊ฐ ๋ช ์๋๋ฅผ ๊ฐ์ง๋๋ค. - ์์ ๋ฐ ์์ฌ ์์: ํ๊ทธ ์ด๋ฆ(์:
p) ๋๋ ์์ฌ ์์(์:::selection,::highlight)๋ก ์์๋ฅผ ํ๊ฒํ ํ๋ ์ ํ์๋ ๋ฎ์ ๋ช ์๋๋ฅผ ๊ฐ์ง๋๋ค. - ์ ์ฒด ์ ํ์: ์ ์ฒด ์ ํ์(
*)๋ ๊ฐ์ฅ ๋ฎ์ ๋ช ์๋๋ฅผ ๊ฐ์ง๋๋ค.
์ฌ๋ฌ ์ ํ์๊ฐ ๋์ผํ ์์์ ์ ์ฉ๋ ๋, ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ์ ํ์์ ๋ช ์๋๋ฅผ ๊ณ์ฐํ๊ณ ๊ฐ์ฅ ๋์ ๋ช ์๋๋ฅผ ๊ฐ์ง ์ ํ์์ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค. ๋ ์ ํ์์ ๋ช ์๋๊ฐ ๋์ผํ๋ฉด CSS ์คํ์ผ์ํธ์์ ๋์ค์ ๋ํ๋๋ ์ ํ์์ ์คํ์ผ์ด ์ ์ฉ๋ฉ๋๋ค.
ํ์ด๋ผ์ดํธ ์คํ์ผ์ ๋ช ์๋ ์ ์ฉํ๊ธฐ
์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ๋ก ์์
ํ ๋, ::selection๊ณผ ::highlight๋ฅผ ์ธ๋ผ์ธ ์คํ์ผ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ช
์๋๋ ํนํ ์ค์ํฉ๋๋ค. ๋ช
์๋ ๊ณ ๋ ค ์ฌํญ์ด ์ด๋ป๊ฒ ์ ์ฉ๋ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค:
::selection๋::highlight:::highlight๋ ์ผ๋ฐ์ ์ผ๋ก::selection๋ณด๋ค *๋* ๊ตฌ์ฒด์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด๋::selection๊ณผ::highlight๊ท์น์ด ๋ชจ๋ ๋์ผํ ํ ์คํธ์ ์ ์ฉ๋ ๊ฒฝ์ฐ, ์ผ๋ฐ์ ์ผ๋ก::highlight๊ท์น์ด ์ฐ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.- ์ธ๋ผ์ธ ์คํ์ผ: ์ธ์ ๋์ฒ๋ผ, ์ธ๋ผ์ธ ์คํ์ผ(HTML ์์์ ์ง์
style์์ฑ ์ฌ์ฉ)์!important๊ฐ ์ฌ์ฉ๋์ง ์๋ ํ::selection๊ณผ::highlight์คํ์ผ์ ๋ชจ๋ ๋ฎ์ด์๋๋ค. - ์ ํ์ ๋ช
์๋:
::highlight์ ํจ๊ป ์ฌ์ฉ๋๋ ์ ํ์์ ๋ช ์๋๋ ๊ฒฐ๊ณผ์ ๋ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,p::highlight(my-highlight)๋ ๊ทธ๋ฅ::highlight(my-highlight)๋ณด๋ค ๋ ๊ตฌ์ฒด์ ์ด๋ฏ๋ก ๋ ๋ค ์ ์ฉ๋ ๊ฒฝ์ฐ ์ฐ์ ํฉ๋๋ค.
์ค์ ๋ช ์๋ ์์
๋ช ๊ฐ์ง ์์ ๋ก ์ด๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค:
/* CSS */
::selection {
background-color: blue;
color: white;
}
::highlight(my-highlight) {
background-color: red;
color: yellow;
}
<p>This is some <span style="--highlight: my-highlight;">important</span> text.</p>
์ด ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ํ
์คํธ๋ฅผ ์ ํํ๋ฉด "my-highlight"๋ก ํ์๋ ๋ถ๋ถ์ ๋นจ๊ฐ์ ๋ฐฐ๊ฒฝ๊ณผ ๋
ธ๋์ ํ
์คํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์๋ํ๋ฉด ::highlight(my-highlight) ๊ท์น์ด ๋ ๊ตฌ์ฒด์ ์ด์ด์ ํด๋น span์ ๋ํ ์ผ๋ฐ ::selection ๊ท์น์ ๋ฎ์ด์ฐ๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ค๋ฅธ ์์ ๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค:
/* CSS */
::selection {
background-color: blue;
color: white;
}
p::selection {
background-color: green;
color: black;
}
<p>This is some text.</p>
์ฌ๊ธฐ์ ์ฌ์ฉ์๊ฐ <p> ํ๊ทธ ์์ ํ
์คํธ๋ฅผ ์ ํํ๋ฉด ๋
น์ ๋ฐฐ๊ฒฝ๊ณผ ๊ฒ์์ ํ
์คํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. p::selection ์ ํ์๋ ์ ์ญ ::selection ์ ํ์๋ณด๋ค ๋ ๊ตฌ์ฒด์ ์
๋๋ค.
ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋ ๊ด๋ฆฌ ์ ๋ต
ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ด ์๋ํ ๋๋ก ์ ์ฉ๋๋๋ก ํ๋ ค๋ฉด ๋ค์ ์ ๋ต์ ๊ณ ๋ คํ์ญ์์ค:
1. ๊ตฌ์ฒด์ ์ธ ์ ํ์ ์ฌ์ฉ
์คํ์ผ์ ์ง์ ํ๋ ค๋ ์์๋ฅผ ํ๊ฒํ
ํ๊ธฐ ์ํด ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ ์ญ ::selection ๊ท์น์ ์ฌ์ฉํ๋ ๋์ .my-section::selection ๋๋ #my-element::selection๊ณผ ๊ฐ์ ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ํน์ ์์๋ ์น์
์ ํ๊ฒํ
ํ์ญ์์ค.
2. highlight-name ์์ฑ ํ์ฉ
๊ฐ๋ฅํ ๋๋ง๋ค ::highlight์ ํจ๊ป highlight-name ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ด ์ง์ ๋ ํ์ด๋ผ์ดํธ๋ฅผ ์ ์ํ์ญ์์ค. ์ด๋ฅผ ํตํด ํน์ ํ
์คํธ ์น์
์ ํ๊ฒํ
ํ๊ณ ์๋ฏธ๋ ๋งฅ๋ฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค.
3. !important ์ฌ์ฉ ์์ (์ผ๋ฐ์ ์ผ๋ก)
!important ํค์๋๋ ์ฌ์ฉํ๊ณ ์ถ์ ์ ํน์ด ์์ ์ ์์ง๋ง, ๊ฐ๋ฅํ ํ ํผํด์ผ ํฉ๋๋ค. !important๋ฅผ ์ฌ์ฉํ๋ฉด CSS๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๊ณ ์์์น ๋ชปํ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์ ๋ช
์๋๋ฅผ ์ฌ์ฉํ์ฌ ์บ์ค์ผ์ด๋๋ฅผ ์ ์ดํ๋ ๋ฐ ์ง์คํ์ญ์์ค.
4. CSS ์ ๋ฆฌ
๋ ผ๋ฆฌ์ ์ด๊ณ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก CSS๋ฅผ ์ ๋ฆฌํ์ญ์์ค. ์ฃผ์์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ฌธ์ํํ๊ณ ๊ด๋ จ ์คํ์ผ์ ํจ๊ป ๊ทธ๋ฃนํํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด CSS๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
5. ์ฒ ์ ํ ํ ์คํธ
๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์์ ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ๋ง๋ค CSS ์บ์ค์ผ์ด๋ ๊ตฌํ์ด ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ํ๋ซํผ์์ ์คํ์ผ์ด ์ผ๊ด๋๊ฒ ์ ์ฉ๋๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
6. ์ ๊ทผ์ฑ ๊ณ ๋ ค
์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ๋์์ธํ ๋ ํญ์ ์ ๊ทผ์ฑ์ ๊ณ ๋ คํ์ญ์์ค. ์ ํํ ์์์ด ํ ์คํธ์ ๋ฐฐ๊ฒฝ ๊ฐ์ ์ถฉ๋ถํ ๋๋น๋ฅผ ์ ๊ณตํ๋์ง ํ์ธํ์ญ์์ค. ๋ํ ์ธ์ง ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์์๊ฒ ๋ฐฉํด๊ฐ ๋๊ฑฐ๋ ํผ๋์ ์ค ์ ์๋ ์คํ์ผ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์ ๊ทผ์ฑ ๊ณ ๋ ค์ฌํญ
ํ ์คํธ ์ ํ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ง๋ง, ์ ๊ทผ์ฑ์ ์ฐ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์๋ชป ๋์์ธ๋ ํ์ด๋ผ์ดํธ๋ ์๊ฐ ์ฅ์ ๋ ์ธ์ง ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๋ฅผ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์์ ๋๋น
ํ ์คํธ์ ๋ฐฐ๊ฒฝ ๊ฐ์ ์์ ๋๋น๊ฐ ์ถฉ๋ถํ์ง ํ์ธํ์ญ์์ค. ์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ(WCAG)์ ์ผ๋ฐ ํ ์คํธ์ ๊ฒฝ์ฐ ์ต์ 4.5:1, ํฐ ํ ์คํธ์ ๊ฒฝ์ฐ 3:1์ ๋๋น์จ์ ๊ถ์ฅํฉ๋๋ค. ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋ผ์ดํธ ์์์ ๋๋น์จ์ ํ์ธํ์ญ์์ค.
๊น๋ฐ์ ๋๋ ๋ฒ์ฉ์ ๋ฐฉ์ง
ํ์ด๋ผ์ดํธ ์คํ์ผ์ ๊น๋ฐ์ด๊ฑฐ๋ ๋ฒ์ฉ์ด๋ ํจ๊ณผ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๋ฌํ ํจ๊ณผ๋ ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ํ๊ณ ๊ด๊ณผ๋ฏผ์ฑ ๊ฐ์ง์ด ์๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์์ ์ ๋ฐํ ์ ์์ต๋๋ค.
๋ช ํํ ์๊ฐ์ ๋จ์ ์ ๊ณต
ํ์ด๋ผ์ดํธ ์คํ์ผ์ด ํ ์คํธ๊ฐ ์ ํ๋์์์ ๋ํ๋ด๋ ๋ช ํํ ์๊ฐ์ ๋จ์๋ฅผ ์ ๊ณตํ๋์ง ํ์ธํ์ญ์์ค. ๋ชจํธํ๊ฑฐ๋ ํผ๋์ค๋ฌ์ธ ์ ์๋ ์คํ์ผ์ ํผํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ์๊ณผ ๋๋ฌด ์ ์ฌํ ๋ฐฐ๊ฒฝ์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
๋ณด์กฐ ๊ธฐ์ ๋ก ํ ์คํธ
ํ๋ฉด ์ฝ๊ธฐ์ ๊ฐ์ ๋ณด์กฐ ๊ธฐ์ ๋ก ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ํ ์คํธํ์ญ์์ค. ์ ํ๋ ํ ์คํธ๊ฐ ํ๋ฉด ์ฝ๊ธฐ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ด๋๋์ง, ๊ทธ๋ฆฌ๊ณ ํ์ด๋ผ์ดํธ ์คํ์ผ์ด ์ฌ์ฉ์์ ์ฝํ ์ธ ํ์ ๋ฐ ์ดํด ๋ฅ๋ ฅ์ ๋ฐฉํดํ์ง ์๋์ง ํ์ธํ์ญ์์ค.
๊ตญ์ ํ ๋ฐ ํ์งํ ๊ณ ๋ ค์ฌํญ
๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ๋์์ผ๋ก ์น์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ ๋๋ ๊ตญ์ ํ(i18n)์ ํ์งํ(l10n)๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์น์ฌ์ดํธ์ ์ฝํ ์ธ ์ ๋์์ธ์ ๋ค๋ฅธ ์ธ์ด, ๋ฌธํ, ์ง์ญ์ ๋ง๊ฒ ์กฐ์ ํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
ํ ์คํธ ๋ฐฉํฅ
๋ค์ํ ํ ์คํธ ๋ฐฉํฅ์ ์ ์ํ์ญ์์ค. ์๋์ด์ ํ๋ธ๋ฆฌ์ด์ ๊ฐ์ ์ผ๋ถ ์ธ์ด๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RTL)์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ(LTR) ๋ฐ RTL ํ ์คํธ ๋ฐฉํฅ ๋ชจ๋์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ญ์์ค. CSS ๋ ผ๋ฆฌ์ ์์ฑ(์: `margin-inline-start`, `border-inline-end`)์ด ์ฌ๊ธฐ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ฌธํ์ ์ฐจ์ด
ํ์ด๋ผ์ดํธ ์์์ ์ ํํ ๋ ๋ฌธํ์ ์ฐจ์ด๋ฅผ ์ผ๋์ ๋์ญ์์ค. ์์์ ๋ฌธํ๋ง๋ค ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋นจ๊ฐ์์ ํ ๋ฌธํ์์๋ ํ์ด์ ์์งํ ์ ์์ง๋ง ๋ค๋ฅธ ๋ฌธํ์์๋ ์ํ์ ์์งํ ์ ์์ต๋๋ค. ์น์ฌ์ดํธ์ ํ๊ฒ ์์ฅ์์ ์์์ ๋ฌธํ์ ์ค์์ฑ์ ์กฐ์ฌํ์ญ์์ค.
๊ธ๊ผด ์ง์
์ ํํ ๊ธ๊ผด์ด ๋ค๋ฅธ ์ธ์ด์์ ์ฌ์ฉ๋๋ ๋ฌธ์์ ๊ธ๋ฆฌํ๋ฅผ ์ง์ํ๋์ง ํ์ธํ์ญ์์ค. ๋ค์ํ ๋ฌธ์๋ฅผ ์ง์ํ๋ ์ ๋์ฝ๋ ๊ธ๊ผด์ ์ฌ์ฉํ์ญ์์ค. ๋ํ ์ฌ์ฉ์์ ์ฅ์น์ ํ์ํ ๊ธ๊ผด์ด ์ค์น๋์ด ์์ง ์๋๋ผ๋ ์น์ฌ์ดํธ์ ํ ์คํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋๋๋ก ๊ธ๊ผด ๋์ฒด ์ ๋ต์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
CSS ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋์ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์ฝ๋์ ๋ํ ์๋ฏธ๋ก ์ ํ์ด๋ผ์ดํ
์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ํค์๋, ๋ณ์, ์ฃผ์๊ณผ ๊ฐ์ ๋ค์ํ ์ ํ์ ์ฝ๋ ์์๋ฅผ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ฝ๋ ์ค๋ํซ์ ๋ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์์ต๋๋ค.
/* CSS */
::highlight(keyword) {
color: #0077cc;
}
::highlight(variable) {
color: #cc0077;
}
::highlight(comment) {
color: #666666;
font-style: italic;
}
<pre><code>
<span style="--highlight: keyword;">function</span> <span style="--highlight: variable;">greet</span>(<span style="--highlight: variable;">name</span>) {
<span style="--highlight: comment;">// This is a comment</span>
console.log("Hello, " + <span style="--highlight: variable;">name</span> + "!");
}
</code></pre>
2. ๊ฒ์์ด ํ์ด๋ผ์ดํ
์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ๊ฒฐ๊ณผ ๋ด์์ ๊ฒ์์ด๋ฅผ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๊ฒ์์ด์ ๊ด๋ จ๋ ํ ์คํธ ๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ์๋ณํ ์ ์์ต๋๋ค.
/* CSS */
::highlight(search-term) {
background-color: yellow;
color: black;
}
<p>This is a <span style="--highlight: search-term;">search</span> result that contains the <span style="--highlight: search-term;">search</span> term.</p>
3. ์์์์ ํ์ ํ๋ ํ์
์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์์์ ํ์ ํ๋๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์์์ ์ ์ถํ๊ธฐ ์ ์ ์์ฑํด์ผ ํ๋ ํ๋๋ฅผ ๋น ๋ฅด๊ฒ ์๋ณํ ์ ์์ต๋๋ค.
/* CSS */
::highlight(required) {
background-color: #ffeeee;
border: 1px solid red;
}
<label for="name">Name:</label>
<input type="text" id="name" <span style="--highlight: required;">required</span><br>
๊ฒฐ๋ก
CSS ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์บ์ค์ผ์ด๋๋ ํ
์คํธ ์ ํ ํ์ด๋ผ์ดํธ๋ฅผ ์ฌ์ฉ์ ์ ์ํ๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ๋ง๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. CSS ์บ์ค์ผ์ด๋, ๋ช
์๋ ๊ท์น, ๊ทธ๋ฆฌ๊ณ ::selection ๋ฐ ::highlight์ ๊ธฐ๋ฅ์ ์ดํดํจ์ผ๋ก์จ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๋ํ ๋๋ก ์ ์ฉ๋๋๋ก ํ ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ๊ณ ๊ฐ์๊ฒ ํฌ๊ด์ ์ด๊ณ ์ ๊ทผ์ฑ ์๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ํ์ด๋ผ์ดํธ ์คํ์ผ์ ๋์์ธํ ๋ ์ ๊ทผ์ฑ๊ณผ ๊ตญ์ ํ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ์๋ฏธ๋ก ์ HTML ๋ฐ CSS ์ฌ์ฉ์ ์ ์ ์์ฑ๊ณผ ํจ๊ป `::selection` ๋ฐ `::highlight`์ ์ฌ์ฉ์ ์ ์คํ๊ฒ ๊ณํํจ์ผ๋ก์จ ์ํ๋ ํ์ด๋ผ์ดํธ ํจ๊ณผ๋ฅผ ์ ํํ๊ฒ ๋ฌ์ฑํ์ฌ ์น ํ์ด์ง์ ์ฌ์ฉ์ฑ๊ณผ ์๊ฐ์ ๋งค๋ ฅ์ ๋ชจ๋ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ CSS ๊ธฐ๋ฅ์ด ์ ๊ณตํ๋ ์ ์ฐ์ฑ์ ํตํด ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ๋๊ณ ์ง๊ด์ ์ธ ๊ฒฝํ์ ๋ง๋ค์ด ์ฝํ
์ธ ๋ฅผ ๋์ฑ ๋งค๋ ฅ์ ์ด๊ณ ์ ๊ทผ์ฑ ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.