CSS 복합 선택자와 가상 클래스 완벽 가이드

복합 선택자

선택자는 HTML 요소를 찾는 역할을 합니다. 복합 선택자는 여러 기본 선택자를 조합하여 보다 정확하고 효율적으로 대상 요소를 선택할 수 있게 해줍니다.

자손 선택자 (후손 선택자)

특정 요소의 모든 자손(후손) 요소를 선택합니다. 문법: 부모선택자 자식선택자 {CSS속성} (공백으로 구분). 예를 들어 div 안에 있는 모든 span이 선택됩니다(중첩된 span 포함).

<style>
  div span {
    color: red;
  }
</style>

<span>span 태그 (선택 안 됨)</span>
<div>
  <span>div 안의 span (빨간색)</span>
  <p>
    <span>div > p > span (빨간색)</span>
  </p>
</div>

자식 선택자

특정 요소의 바로 아래 자식 요소만 선택합니다. 문법: 부모선택자 > 자식선택자 {CSS속성} (>로 구분).

<style>
  div > span {
    color: red;
  }
</style>

<div>
  <span>직계 자식 span (빨간색)</span>
  <p>
    <span>p 안의 span (선택 안 됨)</span>
  </p>
</div>

그룹 선택자 (병렬 선택자)

여러 요소에 동일한 스타일을 한 번에 적용합니다. 문법: 선택자1, 선택자2, ..., 선택자N {CSS속성} (쉼표로 구분). 가독성을 위해 한 줄에 하나씩 쓰는 것이 좋습니다.

<style>
  div,
  p,
  span {
    color: red;
  }
</style>

<div>div 태그</div>
<p>p 태그</p>
<span>span 태그</span>

교집합 선택자 (병용 선택자)

여러 조건을 모두 만족하는 요소를 선택합니다. 문법: 선택자1선택자2 {CSS속성} (연속해서 붙여씀, 태그 선택자는 맨 앞에 와야 함).

<style>
  p.box {
    color: red;
  }
</style>

<p class="box">p 태그 + box 클래스 (빨간색)</p>
<p>p 태그 (선택 안 됨)</p>
<div class="box">div + box 클래스 (선택 안 됨)</div>

가상 클래스 선택자 (Pseudo-class)

요소의 특정 상태를 나타내는 선택자입니다. 예: 마우스 오버, 방문 여부 등.

hover (마우스 오버)

문법: 선택자:hover { CSS속성 } (콜론 앞뒤 공백 없음).

<style>
  a:hover {
    color: orange;
  }
  .box:hover {
    color: green;
  }
</style>

<a href="#">a 태그 (오렌지로 변경)</a>
<div class="box">div 태그 (초록색으로 변경)</div>

링크 관련 가상 클래스 (참고)

하이퍼링크는 네 가지 상태를 가집니다: :link (방문 전), :visited (방문 후), :hover (마우스 오버), :active (클릭 순간). 작성 순서는 LVHA 순서를 지켜야 합니다. 실제 업무에서는 보통 a { ... }로 기본 스타일을 지정하고 a:hover { ... }로 hover 상태만 추가로 지정합니다.

구조적 가상 클래스 (일부)

  • :root – 문서 루트 요소 선택
  • :not(선택자) – 해당 선택자를 제외한 요소
  • :only-child – 부모 내 유일한 자식
  • :first-child – 첫 번째 자식
  • :last-child – 마지막 자식
  • :nth-child(n) – n번째 자식 (n은 숫자, odd, even, 수식 가능)
  • :nth-last-child(n) – 뒤에서 n번째
  • :nth-of-type(n) – 같은 태그 중 n번째
  • :empty – 자식이 없는 요소
  • :target – URL 프래그먼트가 가리키는 요소

태그: CSS 복합선택자 가상클래스 후손선택자 자식선택자

9월 19일 00:13에 게시됨