μΉ μ ν리μΌμ΄μ μ νλ λͺ¨λν°λ§μ μν κ°λ ₯ν κΈ°μ μΈ CSS Spy Ruleμ λν μ¬μΈ΅ νꡬ. ꡬν, μ μ© μ¬λ‘, λͺ¨λ² μ¬λ‘λ₯Ό μμ보μΈμ.
CSS Spy Rule: μΉ κ°λ°μμ νλ λͺ¨λν°λ§ λ§μ€ν°νκΈ°
μλμ μΈ μΉ κ°λ°μ μΈκ³μμ μ¬μ©μ νλμ μ΄ν΄νλ κ²μ λ§€λ ₯μ μ΄κ³ ν¨κ³Όμ μΈ μΉ μ ν리μΌμ΄μ μ λ§λλ λ° κ°μ₯ μ€μν©λλ€. JavaScriptκ° μνΈ μμ©μ μΆμ νλ κ°λ ₯ν λꡬλ₯Ό μ 곡νμ§λ§, λ μλ €μ Έ μμ§λ§ λ§€μ° ν¨κ³Όμ μΈ κΈ°μ μ΄ μ‘΄μ¬ν©λλ€: λ°λ‘ CSS Spy Ruleμ λλ€. μ΄ μ κ·Ό λ°©μμ CSSμ κ³ μ ν κΈ°λ₯μ νμ©νμ¬ νΉμ μμμ νλμ λͺ¨λν°λ§νκ³ κ·Έμ λ°λΌ μμ μ νΈλ¦¬κ±°ν©λλ€. μ΄ κΈμμλ CSS Spy Ruleμ λν ν¬κ΄μ μΈ νꡬλ₯Ό μ 곡νλ©°, κ·Έ ꡬν, λ€μν μ μ© μ¬λ‘ λ° μΉ κ°λ° μν¬νλ‘μ μννκ² ν΅ν©νκΈ° μν λͺ¨λ² μ¬λ‘λ₯Ό μμΈν λ€λ£Ήλλ€.
CSS Spy Ruleμ΄λ 무μμΈκ°?
CSS Spy Ruleμ CSS μμ¬ ν΄λμ€(pseudo-classes)μ μ νμλ₯Ό μ¬μ©νμ¬ μμμ μνλ μμ± λ³νλ₯Ό κ°μ§νλ κΈ°μ μ λλ€. 미리 μ μλ μ‘°κ±΄μ΄ μΆ©μ‘±λλ©΄ CSSλ μμμ λͺ¨μμ λ³κ²½νκ±°λ, λ κ°λ ₯νκ²λ JavaScript ν¨μλ₯Ό νΈλ¦¬κ±°νλ λ±μ ν΄λΉ μμ μ μ€νν μ μμ΅λλ€. μ΄ λ°©λ²μ ν΅μ¬ κ°μ μ μ€μ§ JavaScript μ΄λ²€νΈ 리μ€λμλ§ μμ‘΄νμ§ μκ³ μμμ νλμ λͺ¨λν°λ§ν μ μλ€λ μ μ μμΌλ©°, νΉμ μλ리μ€μμ λ μ μΈμ μ΄κ³ μ μ¬μ μΌλ‘ μ±λ₯μ΄ λ°μ΄λ μ κ·Ό λ°©μμ μ 곡ν©λλ€.
λ§μΉ μ‘°μ©ν κ΄μ°°μμ²λΌ νΉμ μμμ λ³νλ₯Ό μ§μμ μΌλ‘ κ°μνκ³ κ·Έμ λ°λΌ λ°μνλ€κ³ μκ°νλ©΄ λ©λλ€. μλ₯Ό λ€μ΄, CSSλ₯Ό μ¬μ©νμ¬ μμκ° νλ©΄μ 보μ΄κ² λ λ, λ§μ°μ€κ° μ¬λΌκ°μ λ, λλ 체ν¬λ°μ€κ° μ νλμμ λλ₯Ό κ°μ§ν μ μμ΅λλ€. μ΄ μ 보λ νμ΄μ§μ λ€λ₯Έ μμλ₯Ό μ λ°μ΄νΈνκ±°λ λ 볡μ‘ν JavaScript ν¨μλ₯Ό νΈλ¦¬κ±°νλ λ° μ¬μ©λ μ μμ΅λλ€.
CSS Spy Ruleμ μλ λ°©μ
CSS Spy Ruleμ ν¨κ³Όλ μμ μνλ₯Ό λͺ¨λν°λ§νκΈ° μν΄ CSS μ νμμ μμ¬ ν΄λμ€λ₯Ό μ리νκ² μ¬μ©νλ λ°μ λΉλ‘―λ©λλ€. μ£Όμ κ΅¬μ± μμμ κ·Έ μν μ λ€μκ³Ό κ°μ΅λλ€:
- CSS μ νμ: μ΄λ CSS Spy Ruleμ κΈ°μ΄μ΄λ©°, ID, ν΄λμ€, μμ± λλ DOM λ΄μ κ΄κ³λ₯Ό κΈ°λ°μΌλ‘ νΉμ μμλ₯Ό νκ²ν
ν©λλ€. μλ₯Ό λ€μ΄,
#myElement
λ IDκ° "myElement"μΈ μμλ₯Ό μ ννκ³ ,.myClass
λ ν΄λμ€κ° "myClass"μΈ λͺ¨λ μμλ₯Ό μ νν©λλ€. - CSS μμ¬ ν΄λμ€: μ΄λ μμ±μ΄λ μ΄νΈλ¦¬λ·°νΈκ° μλ μνμ λ°λΌ μμλ₯Ό νκ²ν
νλ νΉμ μ νμμ
λλ€. μΌλ°μ μΈ μλ‘λ
:hover
(μμμ λ§μ°μ€λ₯Ό μ¬λ Έμ λ),:focus
(μμκ° ν¬μ»€μ€λ₯Ό λ°μμ λ),:checked
(체ν¬λ°μ€κ° μ νλμμ λ),:target
(μμκ° URL νλκ·Έλ¨ΌνΈ μλ³μμ λμμΌ λ) λ±μ΄ μμ΅λλ€. - CSS νΈλμ§μ λ° μ λλ©μ΄μ : μ΄λ λ³νκ° λ°μνλ€λ μκ°μ μ νΈλ₯Ό μ 곡νμ¬ λͺ¨λν°λ§ κ³Όμ μ μ¬μ©μμκ² λ μ§κ΄μ μΌλ‘ λ§λλλ€. νΈλμ§μ μ μκ°μ λ°λ₯Έ μμ±μ λΆλλ¬μ΄ λ³νλ₯Ό κ°λ₯νκ² νκ³ , μ λλ©μ΄μ μ λ 볡μ‘νκ³ λμ μΈ μκ° ν¨κ³Όλ₯Ό μ 곡ν©λλ€.
- JavaScript ν΅ν©: CSS Spy Ruleμ κ°λ¨ν μκ°μ λ³νλ₯Ό μ²λ¦¬ν μ μμ§λ§, λ 볡μ‘ν λ‘μ§μ JavaScriptκ° νμν©λλ€. CSS νΈλμ§μ μ΄λ μ λλ©μ΄μ μ μ¬μ©νμ¬ JavaScript ν¨μλ₯Ό νΈλ¦¬κ±°ν¨μΌλ‘μ¨ μ κ΅ν νλ λͺ¨λν°λ§ μμ€ν μ λ§λ€ μ μμ΅λλ€.
CSS Spy Rule ꡬν: λ¨κ³λ³ κ°μ΄λ
CSS Spy Ruleμ ꡬννλ €λ©΄ CSSμ JavaScriptμ μ‘°ν©μ΄ νμν©λλ€. μμνκΈ° μν λ¨κ³λ³ κ°μ΄λλ λ€μκ³Ό κ°μ΅λλ€:
- μμμ νλ μλ³: λͺ¨λν°λ§ν μμμ κ΄μ¬ μλ νΉμ νλμ κ²°μ ν©λλ€. μλ₯Ό λ€μ΄, νΉμ divκ° λ·°ν¬νΈμ λνλ λλ₯Ό μΆμ νκ³ μΆμ μ μμ΅λλ€.
- CSS κ·μΉ μμ±: ν΄λΉ μμμ μνλ νλμ νκ²ν νλ CSS κ·μΉμ μ μν©λλ€. μ΄ κ·μΉμλ JavaScript ν¨μλ₯Ό νΈλ¦¬κ±°ν νΈλμ§μ μ΄λ μ λλ©μ΄μ μ΄ ν¬ν¨λμ΄μΌ ν©λλ€.
- JavaScript ν¨μ μμ±: CSS νΈλμ§μ μ΄λ μ λλ©μ΄μ μ΄ μλ£λ λ μ€νλ JavaScript ν¨μλ₯Ό λ§λλλ€. μ΄ ν¨μλ νμ΄μ§μ λ€λ₯Έ μμλ₯Ό μ λ°μ΄νΈνκ±°λ μλ²μ λ°μ΄ν°λ₯Ό 보λ΄λ λ± νμν λͺ¨λ μμ μ μνν μ μμ΅λλ€.
- CSSμ JavaScript μ°κ²°: JavaScript μ΄λ²€νΈ 리μ€λλ₯Ό μ¬μ©νμ¬ CSS νΈλμ§μ μ΄λ μ λλ©μ΄μ μ λμ κ°μ§νκ³ ν΄λΉ JavaScript ν¨μλ₯Ό νΈλ¦¬κ±°ν©λλ€.
μμ: μμ κ°μμ± κ°μ§
λ·°ν¬νΈμμ μμκ° λ³΄μΌ λλ₯Ό κ°μ§νλ μ€μ μμλ₯Ό ν΅ν΄ μ΄λ₯Ό μ€λͺ ν΄ λ³΄κ² μ΅λλ€. μ΄λ μ΄λ―Έμ§λ₯Ό μ§μ° λ‘λ©νκ±°λ μ¬μ©μκ° νμ΄μ§λ₯Ό μλλ‘ μ€ν¬λ‘€ν λ μ λλ©μ΄μ μ νΈλ¦¬κ±°νλ λ° μ μ©ν μ μμ΅λλ€.
HTML:
μ΄ μμλ λ·°ν¬νΈμ λ³΄μΌ λ λνλ©λλ€.
CSS:
#myElement {
opacity: 0;
transition: opacity 1s ease-in-out;
}
#myElement.visible {
opacity: 1;
}
JavaScript:
const myElement = document.getElementById('myElement');
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
myElement.classList.add('visible');
observer.unobserve(myElement);
}
});
});
observer.observe(myElement);
myElement.addEventListener('transitionend', () => {
console.log('μμκ° μ΄μ μμ ν 보μ
λλ€!');
});
μ΄ μμ μμ JavaScript μ½λλ IntersectionObserver
APIλ₯Ό μ¬μ©νμ¬ μμκ° λ·°ν¬νΈμ λ€μ΄μ€λ μμ μ κ°μ§ν©λλ€. μμκ° λ³΄μ΄κ² λλ©΄ visible
ν΄λμ€κ° μΆκ°λμ΄ CSS νΈλμ§μ
μ νΈλ¦¬κ±°ν©λλ€. κ·Έλ° λ€μ transitionend
μ΄λ²€νΈ 리μ€λκ° JavaScript ν¨μλ₯Ό μ€ννμ¬ μ½μμ λ©μμ§λ₯Ό κΈ°λ‘ν©λλ€.
CSS Spy Ruleμ μ μ© μ¬λ‘
CSS Spy Ruleμ λ€μν μλ리μ€μ μ μ©λ μ μμΌλ©°, νλ λͺ¨λν°λ§ λ° μνΈ μμ© λμμΈμ λ νΉν μ κ·Ό λ°©μμ μ 곡ν©λλ€. λͺ κ°μ§ μ£Όλͺ©ν λ§ν μλ λ€μκ³Ό κ°μ΅λλ€:
- μ§μ° λ‘λ©(Lazy Loading): μ΄μ μμμμ 보μ¬μ€ κ²μ²λΌ, CSS Spy Ruleμ μ΄λ―Έμ§λ λ€λ₯Έ 리μμ€κ° λ·°ν¬νΈμ λ³΄μΌ λλ§ λ‘λ©μ νΈλ¦¬κ±°νλ λ° μ¬μ©λ μ μμ΅λλ€. μ΄λ νμ΄μ§ λ‘λ μκ°μ κ°μ νκ³ λμν μλΉλ₯Ό μ€μ λλ€.
- μ€ν¬λ‘€ κΈ°λ° μ λλ©μ΄μ : μ¬μ©μκ° νμ΄μ§λ₯Ό μλλ‘ μ€ν¬λ‘€ν λ μ λλ©μ΄μ μ΄λ μκ° ν¨κ³Όλ₯Ό νΈλ¦¬κ±°νμ¬ λ λ§€λ ₯μ μ΄κ³ μνΈ μμ©μ μΈ μ¬μ©μ κ²½νμ λ§λλλ€. μ΄λ μ½ν μΈ λ₯Ό μ μ§μ μΌλ‘ λλ¬λ΄κ±°λ νμ΄μ§μ μ€μν μΉμ μ κ°μ‘°νλ λ° μ¬μ©λ μ μμ΅λλ€.
- νΌ μ ν¨μ± κ²μ¬: μ¬μ©μκ° μ λ ₯ν λ νΌ νλκ° μ ν¨νμ§ λλ μ ν¨νμ§ μμμ§λ₯Ό μκ°μ μΌλ‘ λνλ΄λ λ° CSSλ₯Ό μ¬μ©ν©λλ€. μ΄λ μ¦κ°μ μΈ νΌλλ°±μ μ 곡νκ³ μ¬μ©μκ° νΌμ μ μΆνκΈ° μ μ μ€λ₯λ₯Ό μμ νλ λ° λμμ μ€λλ€.
- μ‘°κ±΄λΆ μ½ν μΈ νμ: μμ μλ‘ λ§μ°μ€λ₯Ό μ¬λ¦¬κ±°λ 체ν¬λ°μ€λ₯Ό μ ννλ κ²κ³Ό κ°μ νΉμ μ¬μ©μ μνΈ μμ©μ λ°λΌ μ½ν μΈ λ₯Ό νμνκ±°λ μ¨κΉλλ€. μ΄λ λμ μ΄κ³ λ°μμ μΈ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λλ λ° μ¬μ©λ μ μμ΅λλ€.
- A/B ν μ€ν : CSS Spy Ruleμ ν΅ν΄ μ¬μ©μ μνΈ μμ©μ λͺ¨λν°λ§νκ³ λΆμ νλ«νΌμ λ°μ΄ν°λ₯Ό μ μ‘ν¨μΌλ‘μ¨ νΉμ μμλ κΈ°λ₯μ μ΄λ€ λ²μ μ΄ λ λ§€λ ₯μ μ΄κ±°λ ν¨κ³Όμ μΈμ§ μΆμ ν©λλ€.
- μ κ·Όμ± ν₯μ: μ₯μ κ° μλ μ¬μ©μλ₯Ό μν μκ°μ μ νΈλ₯Ό μ 곡νμ¬ μΉμ¬μ΄νΈμ μ κ·Όμ±μ ν₯μμν€λ λ° CSSλ₯Ό μ¬μ©ν©λλ€. μλ₯Ό λ€μ΄, νμ¬ ν¬μ»€μ€λ μμλ₯Ό κ°μ‘°νκ±°λ μ΄λ€ μμκ° μνΈ μμ© κ°λ₯νμ§ λνλ΄λ λ° CSSλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- λλ²κΉ : νΉμ μμμ μνΈ μμ©ν λ μ½μ λ‘κ·Έλ λ€λ₯Έ λλ²κΉ μμ μ νΈλ¦¬κ±°νλ CSS κ·μΉμ μΌμμ μΌλ‘ μΆκ°ν©λλ€. μ΄λ μ°ΎκΈ° νλ λ²κ·Έλ₯Ό μΆμ νκ±°λ 볡μ‘ν μνΈ μμ©μ μ΄ν΄νλ λ° λμμ΄ λ μ μμ΅λλ€.
CSS Spy Rule μ¬μ©μ μ₯μ
CSS Spy Ruleμ κΈ°μ‘΄μ JavaScript κΈ°λ° νλ λͺ¨λν°λ§ κΈ°μ μ λΉν΄ μ¬λ¬ κ°μ§ μ₯μ μ μ 곡ν©λλ€:
- μ±λ₯: CSS κΈ°λ° λͺ¨λν°λ§μ νΉμ μλ리μ€μμ JavaScript κΈ°λ° λͺ¨λν°λ§λ³΄λ€ μ±λ₯μ΄ λ μ’μ μ μμ΅λλ€. CSS λ³κ²½μ μ’ μ’ λΈλΌμ°μ μ λ λλ§ μμ§μ μν΄ μ§μ μ²λ¦¬λκΈ° λλ¬Έμ λλ€.
- μ μΈμ μ κ·Ό λ°©μ: CSS Spy Ruleμ μ¬μ©νλ©΄ λͺ¨λν°λ§ κ·μΉμ μ μΈμ μΌλ‘ μ μν μ μμ΄ μ½λλ₯Ό λ μ½κΈ° μ½κ³ μ μ§λ³΄μνκΈ° μ’κ² λ§λλλ€.
- JavaScript μμ‘΄μ± κ°μ: μΌλΆ λͺ¨λν°λ§ μμ μ CSSμ μμν¨μΌλ‘μ¨ μ ν리μΌμ΄μ μ νμν JavaScript μ½λμ μμ μ€μ¬ μ±λ₯μ κ°μ νκ³ κ°λ°μ λ¨μνν μ μμ΅λλ€.
- ν₯μλ μ¬μ©μ κ²½ν: CSS νΈλμ§μ κ³Ό μ λλ©μ΄μ μ μ¬μ©μμκ² μκ°μ νΌλλ°±μ μ 곡νμ¬ λͺ¨λν°λ§ κ³Όμ μ λ μ§κ΄μ μ΄κ³ λ§€λ ₯μ μΌλ‘ λ§λλλ€.
κ³Όμ λ° κ³ λ €μ¬ν
μ΄λ¬ν μ₯μ μλ λΆκ΅¬νκ³ CSS Spy Ruleμ λͺ κ°μ§ κ³Όμ μ κ³ λ €μ¬νμ μ μν©λλ€:
- 볡μ‘μ±: CSS Spy Ruleλ‘ λ³΅μ‘ν λͺ¨λν°λ§ λ‘μ§μ ꡬννλ κ²μ μ΄λ €μΈ μ μμΌλ©°, νΉν JavaScriptμ ν΅ν©ν λ κ·Έλ μ΅λλ€.
- ν¬λ‘μ€ λΈλΌμ°μ νΈνμ±: μΌλΆ CSS κΈ°λ₯μ λ€λ₯Έ νλ«νΌμμ μΌκ΄λκ² μ§μλμ§ μμ μ μμΌλ―λ‘ CSS κ·μΉμ΄ λͺ¨λ μ£Όμ λΈλΌμ°μ μ νΈνλλμ§ νμΈν΄μΌ ν©λλ€. Autoprefixerμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ ν¬λ‘μ€ λΈλΌμ°μ νΈνμ±μ λμΈ μ μμ΅λλ€.
- μ μ§λ³΄μμ±: CSS Spy Rule ꡬνμ΄ λ³΅μ‘ν΄μ§μλ‘ μ μ§λ³΄μκ° μ΄λ €μμ§ μ μμ΅λλ€. μ μ ν λ¬Έμνμ μ½λ ꡬμ±μ΄ νμμ μ λλ€.
- μ κ·Όμ±: CSS Spy Rule ꡬνμ΄ μ₯μ κ° μλ μ¬μ©μμκ² μ κ·Ό κ°λ₯νμ§ νμΈν΄μΌ ν©λλ€. CSSκ° μ 곡νλ μκ°μ μ νΈλ₯Ό 보거λ μνΈ μμ©ν μ μλ μ¬μ©μλ₯Ό μν λ체 λ©μ»€λμ¦μ μ 곡ν΄μΌ ν©λλ€.
- κ³Όμ©: CSS Spy Ruleμ κ³Όλνκ² μ¬μ©νλ©΄ μ±λ₯ λ¬Έμ λ₯Ό μ λ°νκ³ μ½λλ₯Ό μ΄ν΄νκΈ° μ΄λ ΅κ² λ§λ€ μ μμΌλ―λ‘ νΌν΄μΌ ν©λλ€. νλͺ νκ² μ¬μ©νκ³ κΈ°μ‘΄μ JavaScript κΈ°λ° κΈ°μ λ³΄λ€ λͺ νν μ΄μ μ μ 곡ν λλ§ μ¬μ©ν΄μΌ ν©λλ€.
CSS Spy Rule ꡬνμ μν λͺ¨λ² μ¬λ‘
CSS Spy Ruleμ μ±κ³΅μ μΈ κ΅¬νμ μν΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄μμμ€:
- λ¨μνκ² μμνκΈ°: κ°λ¨ν λͺ¨λν°λ§ μμ λΆν° μμνμ¬ κ²½νμ μμΌλ©΄μ μ μ°¨ 볡μ‘μ±μ λμ¬κ°λλ€.
- λͺ ννκ³ κ°κ²°ν CSS μ νμ μ¬μ©: λͺ¨λν°λ§νλ €λ μμλ₯Ό μ ννκ² νκ²ν νλ CSS μ νμλ₯Ό μ ννκ³ μ±λ₯μ μν₯μ μ€ μ μλ μ§λμΉκ² 볡μ‘ν μ νμλ νΌν©λλ€.
- μ½λ λ¬Έμν: CSS λ° JavaScript μ½λλ₯Ό μ² μ ν λ¬Έμννμ¬ μ΄ν΄νκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
- μ² μ ν ν μ€νΈ: λͺ¨λ μ£Όμ λΈλΌμ°μ μ μ₯μΉμμ CSS Spy Rule ꡬνμ ν μ€νΈνμ¬ ν¬λ‘μ€ λΈλΌμ°μ νΈνμ±κ³Ό λ°μμ±μ νμΈν©λλ€.
- μ±λ₯ μ΅μ ν: μ±λ₯ λ¬Έμ λ₯Ό νΌνκΈ° μν΄ CSS νΈλμ§μ κ³Ό μ λλ©μ΄μ μ νλͺ νκ² μ¬μ©ν©λλ€. λͺ¨λν°λ§ μ€μ μ€νλλ CSS κ·μΉκ³Ό JavaScript ν¨μμ μλ₯Ό μ΅μνν©λλ€.
- μ κ·Όμ± κ³ λ €: CSS Spy Rule ꡬνμ΄ μ₯μ κ° μλ μ¬μ©μμκ² μ κ·Ό κ°λ₯νμ§ νμΈν©λλ€. CSSκ° μ 곡νλ μκ°μ μ νΈλ₯Ό 보거λ μνΈ μμ©ν μ μλ μ¬μ©μλ₯Ό μν λ체 λ©μ»€λμ¦μ μ 곡ν©λλ€.
- λ¦°ν λꡬ μ¬μ©: CSS λ¦°ν λꡬλ₯Ό μ¬μ©νμ¬ μ μ¬μ μΈ μ€λ₯λ₯Ό μλ³νκ³ μ½λ© νμ€μ κ°μ ν©λλ€.
- λͺ¨λν μ μ§: 볡μ‘ν λͺ¨λν°λ§ μμ μ λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ λͺ¨λλ‘ λλλλ€.
- λ²μ κ΄λ¦¬ μ¬μ©: Gitκ³Ό κ°μ λ²μ κ΄λ¦¬ μμ€ν μ μ¬μ©νμ¬ μ½λ λ³κ²½ μ¬νμ μΆμ νκ³ λ€λ₯Έ κ°λ°μμ νμ ν©λλ€.
κ³ κΈ κΈ°μ λ° κ³ λ €μ¬ν
κΈ°λ³Έμ λμ΄, CSS Spy Rule ꡬνμ ν₯μμν¬ μ μλ λͺ κ°μ§ κ³ κΈ κΈ°μ μ΄ μμ΅λλ€:
- μ¬μ©μ μ§μ CSS μμ± (CSS λ³μ): CSS λ³μλ₯Ό μ¬μ©νμ¬ μ¬μ¬μ© κ°λ₯νκ³ κ΅¬μ± κ°λ₯ν λͺ¨λν°λ§ κ·μΉμ λ§λλλ€. μ΄λ₯Ό ν΅ν΄ κΈ°λ³Έ CSS μ½λλ₯Ό μμ νμ§ μκ³ λ λͺ¨λν°λ§ μμ€ν μ λμμ μ½κ² λ³κ²½ν μ μμ΅λλ€.
- λ―Έλμ΄ μΏΌλ¦¬: λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νμ¬ λͺ¨λν°λ§ κ·μΉμ λ€λ₯Έ νλ©΄ ν¬κΈ°μ μ₯μΉμ λ§κ² μ‘°μ ν©λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ€ν¬ν±κ³Ό λͺ¨λ°μΌ μ₯μΉ λͺ¨λμμ μ μλνλ λ°μν λͺ¨λν°λ§ μμ€ν μ λ§λ€ μ μμ΅λλ€.
- CSS Houdini: μ¬μ©μ μ§μ κΈ°λ₯μΌλ‘ CSSλ₯Ό νμ₯ν μ μλ API μ§ν©μΈ CSS Houdiniμ κ°λ₯μ±μ νμν©λλ€. μ΄λ μ κ΅νκ³ κ³ λλ‘ λ§μΆ€νλ λͺ¨λν°λ§ μμ€ν μ λ§λ€κΈ° μν μλ‘μ΄ κΈΈμ μ΄μ΄μ€λλ€.
- μΉ μ»΄ν¬λνΈ: CSS Spy Ruleμ μΉ μ»΄ν¬λνΈμ κ²°ν©νμ¬ μ¬μ¬μ© κ°λ₯νκ³ μΊ‘μνλ λͺ¨λν°λ§ μ»΄ν¬λνΈλ₯Ό λ§λλλ€. μ΄λ₯Ό ν΅ν΄ μ£Ό μ½λλ² μ΄μ€λ₯Ό μ΄μ§λ½νμ§ μκ³ λ μΉ μ ν리μΌμ΄μ μ λͺ¨λν°λ§ κΈ°λ₯μ μ½κ² ν΅ν©ν μ μμ΅λλ€.
κ²°λ‘
CSS Spy Ruleμ μΉ κ°λ°μμ νλ λͺ¨λν°λ§μ μν κ°λ ₯ν κΈ°μ λ‘, μ¬μ©μ μνΈ μμ©μ μΆμ νκ³ μμ μνμ λ°λΌ μμ μ νΈλ¦¬κ±°νλ λ νΉν μ κ·Ό λ°©μμ μ 곡ν©λλ€. μ μ€ν κ³νκ³Ό ꡬνμ΄ νμνμ§λ§, μ±λ₯ ν₯μ, λ μ μΈμ μΈ μ κ·Ό λ°©μ, ν₯μλ μ¬μ©μ κ²½νμ΄λΌλ μ΄μ μ μΉ κ°λ°μμ λ¬΄κΈ°κ³ μμ κ°μΉ μλ λκ΅¬λ‘ λ§λλλ€. μ΄ κΈμμ μ€λͺ ν μμΉ, μ μ© μ¬λ‘ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨, CSS Spy Ruleμ ν¨κ³Όμ μΌλ‘ νμ©νμ¬ λ λ§€λ ₯μ μ΄κ³ λ°μμ μ΄λ©° μ κ·Όμ± λμ μΉ μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€. μΉμ΄ κ³μ μ§νν¨μ λ°λΌ CSS Spy Ruleκ³Ό κ°μ κΈ°μ μ λ§μ€ν°νλ κ²μ μλλ₯Ό μμκ°κ³ λ°μ΄λ μ¬μ©μ κ²½νμ μ 곡νλ λ° μ€μν κ²μ λλ€.