[TIL] CSS SelectorπŸ‘Ώ

jay__ssΒ·2021λ…„ 11μ›” 4일
1
post-thumbnail

1. λ³΅ν•©μ„ νƒμžπŸ˜±

기본적으둜 μ—¬λž˜κ°œμ˜ μ„ νƒμžλ₯Ό μ„ νƒν•˜λŠ” 방법이 있고, μ΄λŠ” ,둜 각 μ„ νƒμžλ“€μ„ κ΅¬λΆ„ν•œλ‹€.

  h1, h2, h3, h4, h5, h6 {color: red;}
<ul>
  <li class="apple">       <!-- μžμ‹μ΄μž μžμ† -->
    <div>                  <!-- μžμ† -->
      <p></p>              <!-- μžμ† -->
    </div>
  </li>            
  <li class="grape"></li>  <!-- μžμ‹μ΄μž μžμ† -->
  <li class="banana"></li> <!-- μžμ‹μ΄μž μžμ† -->
</ul>			   <!-- 각 liλ“€λΌλ¦¬λŠ” ν˜•μ œ!! -->

직관적인 이해λ₯Ό μœ„ν•΄ μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄μ•˜λ‹€.
ul의 μžμ‹μ€ li 3κ°œμ΄λ‹€. ul의 μžμ†μ€ liλ₯Ό ν¬ν•¨ν•œ li, div, pμ΄λ ‡κ²Œ λœλ‹€.

1.1 μžμ† μ„ νƒμž

ul li {color:red;}

μžμ†μ„ μ„ νƒν•˜λ €λ©΄ 곡백을 μ‚¬μš©ν•΄μ„œ μ„ νƒν•œλ‹€.
li, div, p의 κΈ€μžμƒ‰μ΄ λ ˆλ“œλ‘œ 바뀐닀.

1.2 μžμ‹ μ„ νƒμž

ul > li {color:red;}

μžμ‹μ„ μ„ νƒν•˜λ €λ©΄ >λ₯Ό μ‚¬μš©ν•΄μ€€λ‹€.
μœ„μ˜ κ²½μš°λŠ” div pλ₯Ό μ œμ™Έν•œ li만 μ„ νƒλœλ‹€. (μžμ‹κ³Ό μžμ†μ„ ν—·κ°ˆλ¦¬μ§€ 말자)

1.3 인접 ν˜•μ œ μ„ νƒμž

.apple + li {color:red;}

말 κ·ΈλŒ€λ‘œ μΈμ ‘ν•œ ν˜•μ œλ₯Ό μ„ νƒν•˜λŠ” 것이닀. μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” μ• ν”Œκ³Ό κ°€μž₯ μΈμ ‘ν•œ li인 κ·Έλ ˆμ΄ν”„κ°€ μ„ νƒλœλ‹€.
(λ‹¨μΌμ„ νƒμž„μ„ μžŠμ§€ 말자!!)

1.4 일반 ν˜•μ œ μ„ νƒμž

ul ~ li {color: red;}

단일 선택이 있으면 일반적으둜 λͺ¨λ“  ν˜•μ œλ₯Ό μ„ νƒν•˜λŠ” 것도 μžˆμ„ 것이닀. μ΄λŠ” ~둜 선택할 수 μžˆλ‹€. ~ μ•žμ— λ‚˜μ™€μžˆλŠ” μš”μ†Œ 이후에 λ‚˜μ˜€λŠ” λͺ¨λ“  λ’€μš”μ†Œλ“€μ„ λ§ν•œλ‹€. 이해가 μ–΄λ €μ› λŠ”λ°, μš” 예제둜 λ§ν•˜λ©΄

"ul λ’€μ—λ‚˜μ˜€λŠ” 같은 λΆ€λͺ¨λ₯Ό κ°€μ§€λŠ” liλ₯Ό μ„ νƒν•˜κ² μŠ΅λ‹ˆλ‹€"

λΌλŠ” 뜻이 λœλ‹€. 가끔은 μ½”λ“œκ°€ 이해가 λΉ λ₯Όλ•Œλ„, μ½”λ“œκ°€ κ΅¬ν˜„λœ 화면을 λ³΄λŠ”κ²Œ λΉ λ₯Όλ•Œλ„ μžˆλŠ”κ²ƒ κ°™λ‹€.
(ν˜•μ œμš”μ†Œλž€ 같은 λΆ€λͺ¨λ₯Ό κ°€μ§€λŠ” 애듀을 λ§ν•œλ‹€)

2. μ†μ„±μ„ νƒμžπŸ‘Ώ

말 κ·ΈλŒ€λ‘œ HTMLνƒœκ·Έ 쀑 attribute값을 κ°€μ§€λŠ” 애듀을 κ³ λ₯΄κ² λ‹€λŠ” μ–˜κΈ°κ°€ λœλ‹€. κ°€μž₯ μ‰½κ²Œ λ– μ˜¬λ¦΄ 수 μžˆλŠ” νƒœκ·ΈλŠ” aνƒœκ·Έμ΄λ‹€(λ°˜λ“œμ‹œ λ„˜μ–΄κ°€λŠ” νŽ˜μ΄μ§€μ˜ μ£Όμ†Œκ°€ 있기 λ•Œλ¬Έμ—!!href)
총 6μ’…λ₯˜κ°€ μžˆλŠ”λ°, μ•”κΈ°κ°€ μ•„λ‹Œ '이해'λ₯Ό λͺ©μ μœΌλ‘œ ν•œλ‹€. (μ–΄μ°¨ν”Ό λͺ¨λ₯Ό λ•Œ μ—¬κΈ°λ‘œ 보러 μ˜¬κ±°λ‹€...)

2.1 tag[attribute]

a[href] {color:red;}

의미λ₯Ό ν’€μ–΄λ³΄μžλ©΄, aνƒœκ·Έμ΄λ©΄μ„œ hrefλΌλŠ” 속성을 κ°€μ§„νƒœκ·Έλ₯Ό μ„ νƒν•œλ‹€. (이 μ˜ˆμ œμ— ν•œν•΄μ„œλŠ” μ•„λ§ˆ 세상 λͺ¨λ“  aνƒœκ·Έκ°€ 선택 될 것이닀.)

2.2 tag[attribute='var']

a[href="apple.bo.qw"]

속성 값이 λ°˜λ“œμ‹œ μΌμΉ˜ν•΄μ•Ό ν•˜λŠ” μ„ νƒμžμ΄λ‹€. apple.bo.qwμ—μ„œ ν•œ κΈ€μžλΌλ„ 틀리면 μ„ νƒλ˜μ§€ μ•ŠλŠ”λ‹€.

2.3 tag[attribute~='var']

a[href~="apple.bo.qw"]

속성에 단어가 포함 λ˜μ–΄μ•Όν•œλ‹€. μ—¬κΈ°μ„œ λ‹¨μ–΄ν¬ν•¨μ΄λž€, 속성=aabbccλΌλŠ” νƒœκ·Έκ°€ μžˆλŠ”λ° νƒœκ·Έ~='bb'λ₯Ό 찾으면 선택이 μ•ˆλœλ‹€. aabbccλΌλŠ” 단어가 ν†΅μœΌλ‘œ λ“€μ–΄κ°€μ•Ό ν•œλ‹€. 단어와 λ‹¨μ–΄μ˜ ꡬ뢄은 λ„μ–΄μ“°κΈ°λ‘œ λœλ‹€. λ§Œμ•½ aa bb ccμ˜€λ‹€λ©΄ 선택이 λ˜μ—ˆμ„ 것이닀.

2.4 tag[attribute^='var']

a[href^="appl"]

캐럿으둜 μ°ΎλŠ” 것은 μ‹œμž‘ 값이닀. 이것은 λ‹¨μ–΄μ˜ κ°œλ…μ΄ μ•„λ‹ˆλΌ μ‹œμž‘ν•˜λŠ” λ¬Έμžμ—΄λ‘œ 생각해야 ν•œλ‹€. 이해가 μ‰½κ²Œ μΌλΆ€λŸ¬ applκΉŒμ§€λ§Œ μ μ—ˆλŠ”λ°, μ΄λž˜λ„ 선택이 λœλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

2.5 tag[attribute$='var']

a[href$="qw"]

λ‹¬λŸ¬μ‚¬μΈμ€ λλ‚˜λŠ” 값을 μ˜λ―Έν•œλ‹€. μœ„μ˜ 캐럿과 μœ μ‚¬ν•˜λ‹€. 이것 μ—­μ‹œ 단어가 μ•„λ‹Œ λ¬Έμžμ—΄μ˜ κ°œλ…μ΄λ‹€.

2.6 tag[attribute*='var']

a[href*="pple"]

μ—μŠ€ν„°λ¦¬μŠ€ν¬κ°€ μ˜λ―Έν•˜λŠ” 것은 포함 λ¬Έμžμ—΄μ΄λ‹€. λ‹¨μˆœνžˆ λ„μ–΄μ“°κΈ°λ‚˜ ꡬ뢄없이 ppleλΌλŠ” λ¬Έμžμ—΄λ§Œ μžˆλ‹€λ©΄ μ„ νƒν•˜λŠ” 것이닀.

이 νŒŒνŠΈμ—μ„œ μœ λ…ν•  것은 단어와 λ¬Έμžμ—΄μ˜ 차이λ₯Ό μ΄ν•΄ν•˜λŠ” 것이닀!!!

3. Pseudo selectorπŸ‘ΏπŸ‘ΏπŸ‘Ώ

pseudo : κ°€μƒμ˜

Pseudo μ„ νƒμžμ—μ„œ μ•Œμ•„μ•Ό ν•  것은 두 가지이닀. :둜 μ„ νƒν•˜λŠ” pseudo-class-selector 와 ::둜 μ„ νƒν•˜λŠ” pseudo-elements-selectorκ°€ μžˆλ‹€.

<!-- div에 마우슀λ₯Ό 올리면 κΈ€μžμƒ‰μ„ red둜 -->
div:hover {color:red;}`
<!-- div의 λ§ˆμ§€λ§‰ μžμ‹μœΌλ‘œ |λ₯Ό μΆ”κ°€ν•˜κ² λ‹€ -->
div::after {content:"|"}`

class vs elements (: vs ::)

κ°€μƒν΄λž˜μŠ€ μ„ νƒμžμ™€ κ°€μƒμš”μ†Œ μ„ νƒμžλŠ” κ½€λ‚˜ 많이 μ“°μ΄λŠ”λ° κ·Έ μ“°μž„μƒˆλ₯Ό 기얡해두면 νŽΈν•˜λ‹€.

κ°€μƒν΄λž˜μŠ€ μ„ νƒμžλŠ” νŠΉμ •ν•œ μƒνƒœμ— μŠ€νƒ€μΌμ„ μž…νž λ•Œ
κ°€μƒμš”μ†Œ μ„ νƒμžλŠ” νŠΉμ •ν•œ 뢀뢄에 μŠ€νƒ€μΌμ„ μž…νž λ•Œ μ‚¬μš©λœλ‹€.

λ¬Όλ‘  νŠΉμ •ν•œ μƒνƒœλΌλŠ” 것은 κΈ°μ–΅ν•˜κΈ°μ— νŽΈν•œ 방법이고, μ—„λ°€νžˆ λ§ν•˜λ©΄ κ°€μƒμ˜ 클래슀 즉, μžˆμ§€λ„ μ•Šμ€ 클래슀λ₯Ό μžˆλ‹€κ³  μ—¬κΈ°λŠ” 것이닀.

3.1 pseudo-class-selector

가상 ν΄λž˜μŠ€λž€, htmlμƒμ—λŠ” μžˆμ§€λ„ μ•Šμ€ κ°€μƒμ˜ 클래슀λ₯Ό μƒμ„±ν•˜λŠ” 것이닀.

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
</ul>

κ°€μƒν΄λž˜μŠ€ μ„ νƒμžλŠ” νŠΉλ³„ν•œ 상황 뿐만 μ•„λ‹ˆλΌ μ›ν•˜λŠ” 순번의 μš”μ†Œλ₯Ό 선택할 λ•Œλ„ 쓰인닀.

li:first-child
li:last-child
li:nth-child(n)
li:nth-child(2n+1)
li:nth-child(2n)

μˆœμ„œλŒ€λ‘œ

첫번째 li 선택(1)
λ§ˆμ§€λ§‰ li 선택(6)
n번째 li 선택(if, n=2 β†’ 2)
ν™€μˆ˜λ²ˆμ§Έ li 선택(1,3,5)
짝수번째 li 선택(2,4,6)

λ§Œμ•½ 이것을 htmlμ—μ„œ λ§ˆν¬μ—…ν• λ•Œ 클래슀λ₯Ό λΆ€μ—¬ν•΄μ€€λ‹€λ©΄, λ§ˆν¬μ—…λ„ μ–΄μ§€λŸ¬μ›Œμ§€κ³  λΆˆν•„μš”ν•œ 클래슀 생성을 ν•˜κ²Œλ˜λ―€λ‘œ cssμ—μ„œ μ²˜λ¦¬ν•΄μ€€λ‹€.

3.2 pseudo-elements-selector

μžˆμ§€λ„ μ•Šμ€ μš”μ†Œλ₯Ό μžˆλŠ” κ²ƒμ²˜λŸΌ 생성을 ν•΄μ£ΌλŠ” 것이닀.

<!-- html -->
<div>κ°€μƒμš”μ†Œ</div>

/* CSS */
div::after {content: "|";}
div::before {content: "|";}

μ΄λ ‡κ²Œ μŠ€νƒ€μΌμ„ μž…ν˜€μ£Όλ©΄ 전후에 |λΌλŠ” μ½˜ν…μΆ”κ°€ μΆ”κ°€λœλ‹€.

|κ°€μƒμš”μ†Œ
κ°€μƒμš”μ†Œ|

μ–΄λ– ν•œ μ˜λ―Έλƒλ©΄, μ„ νƒμž::after의 경우 μ„ νƒμžμ˜ λ§ˆμ§€λ§‰ μžμ‹μœΌλ‘œ htmlμ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ°€μƒμ˜ μš”μ†Œλ₯Ό λ§Œλ“œλŠ” 것이닀. (::beforeλŠ” λ§ˆμ§€λ§‰μ΄ μ•„λ‹Œ μ²«λ²ˆμ§Έμžμ‹)

βœ… 끝으둜

μ„ νƒμžλ₯Ό λ“€μ–΄κ°€λ©΄μ„œ μ‘°κΈˆμ”© 머리가 μ•„νŒŒμ˜€κΈ° μ‹œμž‘ν•œλ‹€. λ‚˜λŠ” htmlκ³Ό cssλ₯Ό μΈν„°λ„·μ—μ„œ κ°•μ˜λ‘œ 미리 λ“£κ³ λ‚˜μ„œ μˆ˜μ—…μ„ λ“£κ³ μžˆλ‹€. 였늘 κ°•μ˜μ€‘μ— 머릿속에 남은 말이 ν•˜λ‚˜μžˆλ‹€.

"이전에 미리 κ°•μ˜λ₯Ό λ“€μ–΄ μ΄ν•΄ν•΄μ„œ μ•Œκ³ μžˆλŠ” 것과 직접 ν•΄λ³΄λŠ” 것은 λ³„κ°œμ˜ μΌμž…λ‹ˆλ‹€"

λ™λ£Œλ“€μ˜ μ‹œλ©˜ν‹± λ§ˆν¬μ—…μ„ λ³΄λ©΄μ„œ, λ™λ£Œλ“€μ˜ CSS μ‹€μŠ΅μ„ λ³΄λ©΄μ„œ 크게 λŠλΌλŠ” 뢀뢄이 λ§Žλ‹€. μ§€κΈˆ ν•˜κ³ μžˆλŠ” 것에 집쀑을 ν•΄μ•Όν•˜κ³ , μ†μœΌλ‘œ ν•˜λŠ” 'ν›ˆλ ¨ 또 ν›ˆλ ¨'을 λͺ…μ‹¬ν•œλ‹€πŸ€£(κ·Έλ ‡λ‹€κ³  ν•΄μ„œ λͺ¨μžλž€ 3%λ₯Ό μ±„μš°κΈ° μœ„ν•΄ λ‹€μŒ λ‹¨κ³„μ˜ 97%λ₯Ό ν–₯ν•΄κ°€λŠ” 것을 포기해선 μ•ˆλœλ‹€!!! 이것 μ—­μ‹œ κ°•μ‚¬λ‹˜μ˜ λͺ…μ–Έ...) 그리고 λ„ˆλ¬΄ 곡뢀λ₯Ό μœ„ν•œ 기둝이 μ•„λ‹Œ 기둝을 μœ„ν•œ 곡뢀λ₯Ό ν•˜λŠ” λŠλ‚Œμ΄ λ“ λ‹€. νƒ€κ°œμ±…μ΄ ν•„μš”ν•  것 같은데, μˆ˜μ—…λ“£κ³  λ°₯λ¨Ήκ³  볡슡 및 기둝을 ν•˜λ©΄ 정신없이 ν•œλ°€μ€‘μ΄λ‹€...(λ³΅μŠ΅λ°©λ²•μ΄λ‚˜ 기둝방법에 λ¬Έμ œκ°€ μžˆλŠ”κ±ΈκΉŒ...?)
κ³΅λΆ€λŠ” ν•˜κΈ° 싫은데 놀 μˆ˜κ°€ μ—†μœΌλ‹ˆ μ—”ν‹°ν‹°μ½”λ“œ ν‘œ λ³΄λ©΄μ„œ μ†Œλ¦¬λ‚΄μ–΄ μ½λŠ” 쀑인데 재.밌.λ‹€.

μ•°νΌμ„Όλ“œ,,캐럿,,μ—μŠ€ν„°λ¦¬μŠ€ν¬,,앳사인,,

> μ°Έκ³  μ‚¬μ΄νŠΈ

profile
πŸ˜‚κ·Έλƒ₯ μ§μ§„ν•˜λŠ” (μ˜ˆλΉ„)개발자

0개의 λŒ“κΈ€