0. κ°μ
μ 무 μ½λ리뷰 μ€ λλ£λΆμ΄ ν΄λ¦ κ°λ₯ μ¬λΆμ λ°λΌ λ€λ₯Έ μ€νμΌμ΄ νμνμ¬ λ€μκ³Ό κ°μ μ½λλ₯Ό μ μν΄μ£Όμ ¨λλ°, style lint selector-max-type: 0μ κ±Έλ € μλ¬κ° λ°μνκ² λμμ΅λλ€.
selector-max-type λ£°μ νκ·Έ μ νμλ₯Ό μ¬μ©ν¨μΌλ‘ μΈν΄μ μ¬λ¬ μ»΄ν¬λνΈκ° μ€μ²©λμ΄ μμ λ νμ μ»΄ν¬λνΈμ μ€νμΌμ μν₯μ μ£Όλ κ±Έ μ°¨λ¨νκΈ° μν΄μ μ μ©ν΄ λμμ΅λλ€
&__content {
background-color: #{$opacity-gray-16};
&:where(button) {
&:hover {
background-color: #{$opacity-gray-24};
}
&:active {
background-color: #{$opacity-gray-32};
}
}
}
κ·Έλμ μλμ κ°μ λ°©λ²μ λ€μ μ μν΄μ£Όμ ¨λλ°, κΈ°μ‘΄μ &:where(button)μμ μ°¨μ΄λ₯Ό μ νν μΈμ§νμ§ λͺ»νμ¬ selector-max-typeμ λν΄ μμλ³΄λ €κ³ ν©λλ€.
&__content {
background-color: #{$opacity-gray-16};
&:where(button#{&}) { // buttonμμ button#{&}λ‘ λ³κ²½λ¨
&:hover {
background-color: #{$opacity-gray-24};
}
&:active {
background-color: #{$opacity-gray-32};
}
}
}
1. μμΈ μ κ·Ό λ°©λ²
λ¨Όμ νμ κ·Έλ λ― μ€νμΌλ¦°νΈ 곡μλ¬Έμ(selector-max-type docs)λΆν° μ΄ν΄λ³΄μμ΅λλ€.
μ νκΈ° λͺ©λ‘μ κ° μ νκΈ°λ κ°λ³μ μΌλ‘ νκ°λλ€?!
곡μ λ¬Έμ μ΄λ°λΆλ₯Ό 보면 λ€μκ³Ό κ°μ 문ꡬλ₯Ό λ³Ό μ μμ΅λλ€
This rule resolves nested selectors before counting the number of type selectors. Each selector in a selector list is evaluated separately.
μ¬κΈ°μ Each selector in a selector list is evaluated separately. (μ νμ λͺ©λ‘μ κ° μ νμλ κ°λ³μ μΌλ‘ νκ°λ©λλ€.) λΌλ λ¬Έκ΅¬κ° λμ λλλ€.
μ΄λ€ μ νμκ° κ°λ³μ μΌλ‘ νκ°λλμ§ μμ보기 μ μ μ νμμ μ’ λ₯κ° λ¬΄μμ΄ μλμ§ κ°λ¨ν μμ보λλ‘νκ² μ΅λλ€.
μ νμμ μ’ λ₯
μ νμμ μ’ λ₯λ MDNμλ μ λμμλλ°, κ°λ¨ν λμ΄νμλ©΄ λ€μκ³Ό κ°μ΅λλ€.
- κΈ°λ³Έ μ νμ
- μ 체 μ νμ: λͺ¨λ μμλ₯Ό μ νν©λλ€.(ex. *, ns|*, *|*)
- μμ μ νμ: νΉμ HTML μμλ₯Ό μ νν©λλ€. (ex. div, p, h1)
- ν΄λμ€ μ νμ: νΉμ ν΄λμ€κ° μλ μμλ₯Ό μ νν©λλ€.
- ID μ νμ: νΉμ IDκ° μλ μμλ₯Ό μ νν©λλ€. (ex. #id)
- μμ± μ νμ: νΉμ μμ±μ κ°μ§ μμλ₯Ό μ νν©λλ€. (ex. input[type="text"])
- κ·Έλ£Ή μ νμ: μ¬λ¬ μ νμλ₯Ό μΌνλ‘ κ΅¬λΆνμ¬ ν λ²μ μ€νμΌμ μ μ©ν©λλ€. (ex. h1, h2, p)
- μμ λ° νμ μ νμ
- μμ μ νμ: νΉμ μμμ μ§κ³ μμμ μ νν©λλ€. (ex. ul > li)
- νμ μ νμ: νΉμ μμμ λͺ¨λ νμμ μ νν©λλ€. (ex. div p)
- μΌλ° νμ μ νμ: 첫 λ²μ§Έ μμλ₯Ό λ€λ°λ₯΄λ©΄μ κ°μ λΆλͺ¨λ₯Ό 곡μ νλ λ λ²μ§Έ μμλ₯Ό λͺ¨λ μ νν©λλ€. (ex. p ~ span)
- μΈμ νμ μ νμ: 첫 λ²μ§Έ μμμ λ°λ‘ λ€μ μμΉνλ©΄μ κ°μ λΆλͺ¨λ₯Ό 곡μ νλ λ λ²μ§Έ μμλ₯Ό μ νν©λλ€. (ex. h2 + p)
- μ΄ μ νμ: 첫 λ²μ§Έ μμμ μνλ λͺ¨λ λ λ²μ§Έ μμλ₯Ό μ νν©λλ€. (ex. col || td)
- μν μ νμ
- μμ¬ ν΄λμ€ μ νμ: νΉμ μνμ μλ μμλ₯Ό μ νν©λλ€. (ex. a:hover, input:focus, li:first-child)
- μμ¬ μμ μ νμ: μμμ νΉμ λΆλΆμ μ νν©λλ€. (ex. p::first-line, ::before, ::after)
- λ³΅ν© μ νμ: μ¬λ¬ μ νμλ₯Ό μ‘°ν©νμ¬ λ ꡬ체μ μΌλ‘ μ νν©λλ€. (ex. div.classname > p#idname)
2. μλ¬ λ°μ/λ―Έλ°μ κ²½μ° λΉκ΅
μ νμμ μ’ λ₯μ λν΄μλ μμλ΄€μΌλ, μ΄μ μλμ μλ¬ λ°μ/λ―Έλ°μμ λ κ°μ§ κ²½μ°λ₯Ό κ°μ Έμμ λΉκ΅ν΄λ΄€μ΅λλ€.
.content {
...
// 1. μ±κ³΅ν κ²½μ°
&:where(button#{&}) {
...
}
// 2. μ€ν¨ν κ²½μ°
&:where(button) {
...
}
}
λ¨Όμ 1λ²κ³Ό μ€ν¨ν 2λ²μ λ€μκ³Ό κ°μ΄ μ»΄νμΌλ μ½λλ‘ λ³κ²½ν΄λ³΄κ² μ΅λλ€.
- μ±κ³΅ν κ²½μ°: &:where(button#{&}) -> .content:where(button.content)
- μ€ν¨ν κ²½μ°: &:where(button) -> .content:where(button)
μ νμλ κ°λ³μ μΌλ‘ νκ°λλ€κ³ νκΈ°μ μ±κ³΅ν κ²½μ°λ μμ¬ ν΄λμ€ μ νμλ‘ μ΄λ£¨μ΄μ Έ μκ³ μμ¬ ν΄λμ€ λ΄λΆλ ν΄λμ€ μ νμλ‘ μ΄λ£¨μ΄μ Έ μκΈ° λλ¬Έμ μ±κ³΅ν κ²½μ°μ μ νμλ μμ¬ ν΄λμ€ μ νμ + ν΄λμ€ μ νμλ‘ λ³Ό μ μκ³ , μ νμ μ’ λ₯κ° μ€λ³΅λμ§ μκΈ°μ μ±κ³΅ν μ μμλ κ²μ λλ€.
κ·Έλ°λ°, μ΄μνκ² μ€ν¨ν κ²½μ°λ μμ¬ ν΄λμ€ μ νμ + νκ·Έ(μμ) μ νμλ‘ μ΄λ£¨μ΄μ Έ μμ΄ "κ°λ³μ μΌλ‘ μ νμκ° νκ°λλ€λ©΄ μ±κ³΅ν΄μΌ νλ κ² μλκ°?" λΌλ μλ¬Έμ΄ μκΈ°κ² λ©λλ€.
3. selector-max-type: 0μ ν΄λμ€ μ νμλ§ νμ©νλ€
μ μλ¬Έμ κ°μ§κ³ "selector-max-typeμ΄ 0μ΄λ©΄ λ€λ₯΄κ² νκ°λλ κ²μΌ μλ μκ² λ€"λΌλ μκ°μ κ°μ§κ³ ν΄λΉ λ¬Έμ μ λν΄μ μ°Ύμλ΄€λλ°, 곡μ λ¬Έμλ ꡬκΈλ§μΌλ‘ λ΅μ΄ μ λμ€μ§ μμ GPTμκ² λ€μμ λ΅μ μ»μ μ μμμ΅λλ€.
selector-max-typeμ΄ 0μ΄λ©΄ ν΄λμ€ μ νμλ§ νμ©νλ€
μ μ€λͺ μ ν λλ‘ μ΄μ κΉμ§μ λ¬Έμ μ λμ μ ν΄λ³΄λ©΄ μ€ν¨ν κ²½μ°μ μμΈμ΄ λͺ ννκ² λλ¬λκ² λ©λλ€.
- μ±κ³΅ν κ²½μ°: &:where(button#{&}) -> .content:where(button.content) -> μμ¬ ν΄λμ€ μ νμ + ν΄λμ€ μ νμ
- μ€ν¨ν κ²½μ°: &:where(button) -> .content:where(button) -> μμ¬ ν΄λμ€ μ νμ + νκ·Έ(μμ) μ νμ
μ€ν¨ν κ²½μ°μλ νκ·Έ(μμ) μ νμκ° ν¬ν¨λμ΄ μκΈ° λλ¬Έμ stylelint seleoctor-max-type: 0μ κ±Έλ € μλ¬κ° λ°μνλ κ²μ΄μμ΅λλ€.
κ·Έλ¬λ, 곡μλ¬Έμμλ κ΄λ ¨ λ΄μ©μ΄ λ°λ‘ μμ΄μ GPTλ§ λ―Ώκ³ μ΄λλ‘ κ²°λ‘ μ λ΄λ²λ¦¬κΈ°μλ μ°μ°ν΄ μ μ€λͺ μ κΈ°λ°μΌλ‘ ν μ€νΈν΄λ΄€λλ°, νκ·Έ(μμ) μ νμκ° ν¬ν¨λμ΄ μμΌλ©΄ style lint errorλ₯Ό λ°μμν€λ κ²μ νμΈνμμ΅λλ€.
4. λ§μΉλ©°
λλ£μ νΌλλ°±μ ν΅ν΄μ selector-max-typeκ³Ό μ νμμ μ’ λ₯μ λν΄μ μμλ΄€λλ°, μ¬λ΄μμ μ κ·Ήμ μΈ μ½λ 리뷰λ₯Ό ν΅ν΄ λͺ°λλ μ¬μ€μ μκ² λκ³ λλ£μ μ’μ μ½λ© μ€νμΌλ ν‘μνλ©΄μ μλ‘μκ² μ’μ μλμ§λ₯Ό μΌμΌν€κ³ μλ κ² κ°μ μμ¦μ λ§μ‘±μ€λ¬μ΄ νμ¬ μνμ ν΄λκ°κ³ μμ΅λλ€.
μ’μ λλ£κ° μμμ κ°μ¬νκ³ μμΌ GPTμ λ±μ₯λ μμ°λ ₯μ ν° λμμ΄ λλ€λ κ±Έ λ€μ ν λ² κΉ¨λ«κ² λλ€μ.
'Front-End > HTML,CSS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
input,labelμ κ°μΈλ div click eventκ° λ λ² μ€νλλ μ΄μ (0) | 2024.10.21 |
---|
λκΈ