Selector

1. κ°œμš”

styleλ₯Ό 적용 ν•˜κ³ μžν•˜λŠ” HTMLμš”μ†Œλ₯Ό νŠΉμ •ν•  ν•„μš”κ°€ μžˆλ‹€. μ΄λ•Œ μ‚¬μš©ν•˜λŠ” 것이 μ…€λ ‰ν„°/μ„ νƒμž(Selector)이닀. styleλ₯Ό μ μš©ν•˜κ³ μžν•˜λŠ” HTML μš”μ†Œλ₯Ό μ…€λ ‰ν„°λ‘œ νŠΉμ •ν•˜κ³  μ„ νƒλœ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ •μ˜ν•˜λŠ” 것. 볡수개의 μ…€λ ‰ν„°λ₯Ό μ—°μ†ν•˜μ—¬ μ§€μ •ν•  수 있으며 μ‰Όν‘œ(,)둜 ꡬ뢄함. CSS Rule Set

  • νƒœκ·Έ(tag): <p></p>와 같은 νƒœκ·Έ 자체

  • μš”μ†Œ(element): <p>hello world</p>μ—μ„œ <p>νƒœκ·Έ 및 λ‚΄λΆ€ 뢀뢄을 λͺ¨λ‘ 포함

<p>νƒœκ·Έλ₯Ό μ μš©ν•œ μŠ€νƒ€μΌμ΄λΌλŠ” ν‘œν˜„μ€ μ˜³μ§€ μ•ŠμŒ. pμš”μ†Œμ— μ μš©ν•˜λŠ” μŠ€νƒ€μΌλ‘œ ν‘œν˜„ν•˜λŠ” 것이 μ˜³λ°”λ¦„.


2. 전체 μ…€λ ‰ν„°(Universal Selector)

전체 μ…€λ ‰ν„°λŠ” μŠ€νƒ€μΌμ„ λ¬Έμ„œμ˜ λͺ¨λ“  μš”μ†Œμ— μ μš©ν•  λ•Œ μ‚¬μš©. html μš”μ†Œλ₯Ό ν¬ν•¨ν•œ μš”μ†Œκ°€ 선택됨.(head μš”μ†Œλ„ 포함)

κΈ°λ³Έν˜• * {속성: κ°’;}

...
<head>
  <style>
    /* λͺ¨λ“  μš”μ†Œλ₯Ό 선택 */
    * {
      color: red;
    }
  </style>
</head>
<body>
  <h1>Welcome my TIL</h1>
  <p>λ°˜κ°‘μŠ΅λ‹ˆλ‹€.</p>
  <span>μ•ˆλ…•ν•˜μ„Έμš”.</span>
</body>

3. νƒœκ·Έ/νƒ€μž… μ…€λ ‰ν„°(Type Selector)

νƒœκ·Έ μ…€λ ‰ν„°λŠ” νŠΉμ • νƒœκ·Έλ₯Ό μ‚¬μš©ν•œ λͺ¨λ“  μš”μ†Œμ— μŠ€νƒ€μΌμ„ 적용. νƒœκ·Έ μ„ νƒμžλ₯Ό μ‚¬μš©ν•΄ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή νƒœκ·Έλ₯Ό μ‚¬μš©ν•œ λͺ¨λ“  μš”μ†Œμ— 적용.

κΈ°λ³Έν˜• νƒœκ·Έλͺ… { μŠ€νƒ€μΌ κ·œμΉ™ }


4. ID μ…€λ ‰ν„°(ID Selector)

id μ–΄νŠΈλ¦¬λ·°νŠΈ 값을 μ§€μ •ν•˜μ—¬ μΌμΉ˜ν•˜λŠ” μš”μ†Œλ₯Ό 선택. id μ–΄νŠΈλ¦¬λ·°νŠΈ 값은 쀑볡될 수 μ—†λŠ” μœ μΌν•œ κ°’μ΄λ―€λ‘œ 주둜 λ¬Έμ„œμ˜ λ ˆμ΄μ•„μ›ƒκ³Ό κ΄€λ ¨λœ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λŠ”λ° μ‚¬μš©.

κΈ°λ³Έν˜• #id μ–΄νŠΈλ¦¬λ·°νŠΈ κ°’ { μŠ€νƒ€μΌ κ·œμΉ™ }


5. 클래슀 μ…€λ ‰ν„°(Class Selector)

class μ–΄νŠΈλ¦¬λ·°νŠΈ 값을 μ§€μ •ν•˜μ—¬ μΌμΉ˜ν•˜λŠ” μš”μ†Œλ₯Ό 선택. class μ–΄νŠΈλ¦¬λ·°νŠΈ 값은 쀑볡될 수 있음.

κΈ°λ³Έν˜• .class μ–΄νŠΈλ¦¬λ·°νŠΈ κ°’ { μŠ€νƒ€μΌ κ·œμΉ™ }

HTMLμš”μ†Œμ— class μ–΄νŠΈλ¦¬λ·°νŠΈ 값은 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ μ—¬λŸ¬ 개 μ§€μ •ν•  수 있음. μœ„μ™€ 같이 클래슀 μ…€λ ‰ν„°λ₯Ό μ‚¬μš©ν•˜μ—¬ 미리 μŠ€νƒ€μΌμ„ μ •μ˜ν•΄ 두고, HTMLμš”μ†ŒλŠ” 이미 μ •μ˜λ˜μ–΄ μžˆλŠ” 클래슀λ₯Ό μ§€μ •ν•˜λŠ” κ²ƒμœΌλ‘œ ν•„μš”ν•œ μŠ€νƒ€μΌμ„ μ§€μ •ν•  수 있음. μ΄λŠ” μž¬μ‚¬μš©μ˜ μΈ‘λ©΄μ—μ„œ μœ μš©ν•¨.

Tailwind Css의 κ°œλ…μ΄μ§€ μ•Šμ„κΉŒ? μ‹Άλ‹€. κ³΅μ‹λ¬Έμ„œ


6. μ–΄νŠΈλ¦¬λ·°νŠΈ μ…€λ ‰ν„°(Attribute Selector)

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό κ°–λŠ” λͺ¨λ“  μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό κ°€μ§€λ©° μ§€μ •λœ κ°’κ³Ό μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ 값이 μΌμΉ˜ν•˜λŠ” λͺ¨λ“  μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ 값이 (곡백으둜 λΆ„λ¦¬λœ) λ‹¨μ–΄λ‘œ ν¬ν•¨ν•˜λŠ” μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ~="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ κ°’κ³Ό μΌμΉ˜ν•˜κ±°λ‚˜ μ§€μ • μ–΄νŠΈλ¦¬λ·°νŠΈ κ°’ λ’€ 연이은 ν•˜μ΄ν°("κ°’-")으둜 μ‹œμž‘ν•˜λŠ” μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ|="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈ κ°’μœΌλ‘œ μ‹œμž‘ν•˜λŠ” μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ^="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈ κ°’μœΌλ‘œ λλ‚˜λŠ” μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ$="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

  • μ§€μ •λœ μ–΄νŠΈλ¦¬λ·°νŠΈ 값을 ν¬ν•¨ν•˜λŠ” μš”μ†Œλ₯Ό 선택

    • κΈ°λ³Έν˜• μ…€λ ‰ν„°[μ–΄νŠΈλ¦¬λ·°νŠΈ*="κ°’"] { μŠ€νƒ€μΌ κ·œμΉ™ }

AttributeSelector

7. 볡합 μ…€λ ‰ν„° (Combinator)

7-1. 후손 μ…€λ ‰ν„° (Descendant Combinator)

μžμ‹ μ˜ 1 level μƒμœ„μ— μ†ν•˜λŠ” μš”μ†Œλ₯Ό λΆ€λͺ¨ μš”μ†Œ, 1 level ν•˜μœ„μ— μ†ν•˜λŠ” μš”μ†Œλ₯Ό μžμ† μš”μ†Œ(μžμ‹ μš”μ†Œ)라 함. μžμ‹ λ³΄λ‹€ n level ν•˜μœ„μ— μ†ν•˜λŠ” μ†ν•˜λŠ” μš”μ†ŒλŠ” 후손 μš”μ†Œ(ν•˜μœ„ μš”μ†Œ)라 함.

κΈ°λ³Έν˜• μ…€λ ‰ν„°A μ…€λ ‰ν„°B { μŠ€νƒ€μΌ κ·œμΉ™ }

paragraph 4λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ 것듀에 μŠ€νƒ€μΌμ΄ 적용됨.


7-2. μžμ‹ μ…€λ ‰ν„° (Child Combinator)

μžμ‹ μ…€λ ‰ν„°λŠ” μ…€λ ‰ν„°A의 λͺ¨λ“  μžμ‹ μš”μ†Œ 쀑 μ…€λ ‰ν„°B와 μΌμΉ˜ν•˜λŠ” μš”μ†Œλ₯Ό 선택. 후손은 μ•„λ‹˜.

κΈ°λ³Έν˜• μ…€λ ‰ν„°A > μ…€λ ‰ν„°B { μŠ€νƒ€μΌ κ·œμΉ™ }

paragraph 1, 2만 μŠ€νƒ€μΌμ΄ 적용됨.


7-3. ν˜•μ œ(λ™μœ„) μ…€λ ‰ν„° (Sibling Combinator)

ν˜•μ œ(λ™μœ„) μ…€λ ‰ν„°λŠ” ν˜•μ œ 관계(λ™μœ„ 관계)μ—μ„œ 뒀에 μœ„μΉ˜ν•˜λŠ” μš”μ†Œλ₯Ό 선택할 λ•Œ μ‚¬μš©ν•œλ‹€.

Sibling Combinator

7-3-1. 인접 ν˜•μ œ μ…€λ ‰ν„° (Adjacent Sibling Combinator)

μ…€λ ‰ν„°A의 ν˜•μ œ μš”μˆ˜ 쀑 μ…€λ ‰ν„°A λ°”λ‘œ 뒀에 μœ„μΉ˜ν•˜λŠ” μ…€λ ‰ν„°B μš”μ†Œλ₯Ό 선택. A와 B사이에 λ‹€λ₯Έ μš”μ†Œκ°€ μ‘΄μž¬ν•˜λ©΄ μ„ νƒλ˜μ§€ μ•ŠμŒ.

κΈ°λ³Έν˜• μ…€λ ‰ν„°A + μ…€λ ‰ν„°B { μŠ€νƒ€μΌ κ·œμΉ™ }

7-3-2. 일반 ν˜•μ œ μ…€λ ‰ν„° (General Sibling Combinator)

μ…€λ ‰ν„°A의 ν˜•μ œ μš”μ†Œ 쀑 μ…€λ ‰ν„°A 뒀에 μœ„μΉ˜ν•˜λŠ” μ…€λ ‰ν„°B μš”μ†Œλ₯Ό λͺ¨λ‘ 선택

κΈ°λ³Έν˜• μ…€λ ‰ν„°A ~ μ…€λ ‰ν„°B { μŠ€νƒ€μΌ κ·œμΉ™ }


8. 가상 클래슀 μ…€λ ‰ν„° (Pseudo-Class Selector)

가상 ν΄λž˜μŠ€λŠ” μš”μ†Œμ˜ νŠΉμ • μƒνƒœμ— 따라 μŠ€νƒ€μΌμ„ μ •μ˜ν•  λ•Œ μ‚¬μš©.

  • λ§ˆμš°μŠ€κ°€ μ˜¬λΌμ™€ μžˆμ„ λ•Œ

  • 링크λ₯Ό λ°©λ¬Έν–ˆμ„ λ•Œμ™€ 아직 λ°©λ¬Έν•˜μ§€ μ•Šμ•˜μ„ λ•Œ

  • ν¬μ»€μŠ€κ°€ 듀어와 μžˆμ„ λ•Œ

μ΄λŸ¬ν•œ νŠΉμ • μƒνƒœμ—λŠ” μ›λž˜ ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ§€λ§Œ 가상 클래슀λ₯Ό μž„μ˜λ‘œ μ§€μ •ν•˜μ—¬ μ„ νƒν•˜λŠ” 방법 가상 ν΄λž˜μŠ€λŠ” λ§ˆμΉ¨ν‘œ(.) λŒ€μ‹  콜둠(:)을 μ‚¬μš©, 가상 ν΄λž˜μŠ€λŠ” 미리 μ •μ˜λœ 이름이 있기 λ•Œλ¬Έμ— μž„μ˜μ˜ 이름을 μ‚¬μš©ν•  수 μ—†μŒ.

μ‚¬μš©λ²• μ…€λ ‰ν„°:κ°€μƒν΄λž˜μŠ€ { 클래슀 κ·œμΉ™ }


pseudo-class
Description

:link

μ…€λ ‰ν„°κ°€ λ°©λ¬Έν•˜μ§€ μ•ŠλŠ” 링크일 λ•Œ

:visited

μ…€λ ‰ν„°κ°€ λ°©λ¬Έν•œ 링크일 λ•Œ

:hover

μ…€λ ‰ν„°κ°€ λ§ˆμš°μŠ€κ°€ μ˜¬λΌμ™€ μžˆμ„ λ•Œ

:active

μ…€λ ‰ν„°κ°€ 클릭된 μƒνƒœμΌ λ•Œ

:focus

셀렉터에 ν¬μ»€μŠ€κ°€ 듀어와 μžˆμ„ λ•Œ


8-2. UI μš”μ†Œ μƒνƒœ μ…€λ ‰ν„° (UI element states pseudo-classes)

pseudo-class
Description

:checked

μ…€λ ‰ν„°κ°€ 체크 μƒνƒœμΌ λ•Œ

:enabled

μ…€λ ‰ν„°κ°€ μ‚¬μš© κ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ

:disabled

μ…€λ ‰ν„°κ°€ μ‚¬μš© λΆˆκ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ


8-3. ꡬ쑰 가상 클래슀 μ…€λ ‰ν„° (Structural pseudo-classes)

pseudo-class
Description

:first-child

셀렉터에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  μš”μ†Œ 쀑 첫번째 μžμ‹μΈ μš”μ†Œλ₯Ό 선택, ν˜•μ œ μš”μ†Œ 쀑 제일 첫 μš”μ†Œλ₯Ό 선택

:last-child

셀렉터에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  μš”μ†Œ 쀑 λ§ˆμ§€λ§‰ μžμ‹μΈ μš”μ†Œλ₯Ό 선택, ν˜•μ œ μš”μ†Œ 쀑 제일 λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό 선택

Structural pseudo-classes
pseudo-class
Description

:nth-child(n)

셀렉터에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  μš”μ†Œ 쀑 μ•žμ—μ„œ n번째 μžμ‹μΈ μš”μ†Œλ₯Ό 선택

:nth-last-child(n)

셀렉터에 ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  μš”μ†Œ 쀑 λ’€μ—μ„œ n번째 μžμ‹μΈ μš”μ†Œλ₯Ό 선택

:first-of-type

셀렉터에 ν•΄λ‹Ήν•˜λŠ” μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 쀑 첫번째 λ“±μž₯ν•˜λŠ” μš”μ†Œλ₯Ό 선택

:last-of-type

셀렉터에 ν•΄λ‹Ήν•˜λŠ” μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 쀑 λ§ˆμ§€λ§‰μ— λ“±μž₯ν•˜λŠ” μš”μ†Œλ₯Ό 선택

:nth-of-type(n)

셀렉터에 ν•΄λ‹Ήν•˜λŠ” μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 쀑 μ•žμ—μ„œ n번째 λ“±μž₯ν•˜λŠ” μš”μ†Œλ₯Ό 선택

:nth-last-type(n)

셀렉터에 ν•΄λ‹Ήν•˜λŠ” μš”μ†Œμ˜ λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 쀑 λ’€μ—μ„œ n번째 λ“±μž₯ν•˜λŠ” μš”μ†Œλ₯Ό 선택

ꡬ쑰 가상 μ…€λ ‰ν„°λŠ” 생각보닀 κ΅¬λ³„ν•˜κΈ°κ°€ μ–΄λ ΅λ‹€. μ—¬λŸ¬λ²ˆ μ“°λ©΄μ„œ μ΅μˆ™ν•΄μ§€λ„λ‘ λ…Έλ ₯ν•˜κΈ° 각각의 ꡬ쑰 가상 μ…€λ ‰ν„°λ§ˆλ‹€ νŠΉμ§•μ΄ μžˆλ‹€. λͺ¨λ‘ λ‹€λ₯΄λ―€λ‘œ 상황에 맞게 κ³ λ―Όν•˜λ©° μ‚¬μš©ν•˜κΈ° 상황에 λ”°λΌμ„œλŠ” 같은 μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” κ²½μš°λ„ μžˆλ‹€.


8-4. λΆ€μ • μ…€λ ‰ν„° (Negation pseudo-class)

셀렉터에 ν•΄λ‹Ήν•˜μ§€ μ•ŠλŠ” λͺ¨λ“  μš”μ†Œλ₯Ό 선택

μ‚¬μš©λ²• :not(μ…€λ ‰ν„°) { μŠ€νƒ€μΌ κ·œμΉ™ }

μœ„μ˜ 경우 nth-child()κ³Ό nth-of-type()쀑 μ•„λ¬΄κ±°λ‚˜ μ‚¬μš©ν•΄λ„ 같은 μš”μ†Œλ“€μ΄ μ„ νƒλœλ‹€.

NegationPseudoClass

8-5. μ •ν•©μ„± 체크 μ…€λ ‰ν„° (validity pseudo-class)

pseudo-class
Description

:valid

μ •ν•©μ„± 검증이 μ„±κ³΅ν•œ input μš”μ†Œ λ˜λŠ” form μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

:invalid

μ •ν•©μ„± 검증이 μ‹€νŒ¨ν•œ input μš”μ†Œ λ˜λŠ” form μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

ValidityPseudoClass

9. 가상 μš”μ†Œ μ…€λ ‰ν„° (Pseudo-Element Selector)

가상 μš”μ†ŒλŠ” μš”μ†Œμ˜ νŠΉμ • 뢀뢄에 μŠ€νƒ€μΌμ„ μ μš©ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©

  • μš”μ†Œ μ½˜ν…μΈ μ˜ μ²«κΈ€μž λ˜λŠ” 첫쀄

  • μš”μ†Œ 콘첸츠의 μ•ž λ˜λŠ” λ’€

μ‚¬μš©λ²• μ…€λ ‰ν„°::pseudo-element { μŠ€νƒ€μΌ κ·œμΉ™}

pseudo-class
Description

::first-letter

μ½˜ν…μΈ μ˜ μ²«κΈ€μžλ₯Ό 선택

::first-line

μ½˜ν…μΈ μ˜ 첫쀄을 선택, 블둝 μš”μ†Œμ—λ§Œ 적용

::after

μ½˜ν…μΈ μ˜ 뒀에 μœ„μΉ˜ν•˜λŠ” 곡간을 선택, 일반적으둜 content ν”„λ‘œνΌν‹°μ™€ ν•¨κ»˜ μ‚¬μš©

::before

μ½˜ν…μΈ μ˜ μ•žμ— μœ„μΉ˜ν•˜λŠ” 곡간을 선택, 일반적으둜 content ν”„λ‘œνΌν‹°μ™€ ν•¨κ»˜ μ‚¬μš©

::selection

λ“œλž˜κ·Έ ν•œ μ½˜ν…μΈ λ₯Ό 선택, iOS Safari λ“± 일뢀 λΈŒλΌμš°μ €μ—μ„œλŠ” λ™μž‘ν•˜μ§€ μ•ŠμŒ

PseudoElementSelector


μ°Έκ³ 

poiemaweb 2-2 μ…€λ ‰ν„° λ„μ„œ - HTML + CSS + μžλ°”μŠ€ν¬λ¦½νŠΈ μ›Ή ν‘œμ€€μ˜ 정석


πŸ‘†

πŸ“… 2022-07-10

Last updated