CSS 선택자 level 3 part2 - by. UXKM

  • Publishing
  • CSS
  • CSS 중급
  • CSS 선택자 level 3 part2
요약 설명

CSS 선택자 Level 3는 HTML 요소를 선택하는 규칙들을 표준화한 W3C 기술 문서이며, CSS 3에서 새로 추가되거나 개선된 선택자들을 의미합니다.
선택자는 스타일을 적용할 요소를 지정하는 방법으로, 요소의 태그명, 클래스, 속성, 구조적 위치 등을 기반으로 요소를 선택할 수 있습니다.

CSS 선택자 Level 3에는 조합 선택자, 속성 선택자, 의사(가상) 클래스, 의사(가상) 요소 등 다양한 선택 방법이 포함되어 있으며, 오늘날 웹에서 사용하는 선택자의 대부분이 Level 3 기준입니다.

요약 설명

CSS 선택자 level 3 part-2에서는

  • 의사(가상) 클래스(Pseudo-classes)에 대한 내용을 다루고 있습니다.

의사(가상) 클래스(Pseudo-classes)

구조적 의사(가상)클래스(Structural pseudo-class)

요약 설명

CSS Level 3 선택자
구조 의사 클래스를 사용하면 HTML 요소의 계층 구조에서 특정 위치에 있는 요소를 선택할 수 있습니다.

:root

문서의 root 요소(최상위 요소 html)를 선택합니다.

:empty

아무런 자식(child) 요소도 가지지 않는 요소를 모두 선택합니다.
엘리먼트 내에 스페이스 빈 공간이라도 있다면 그 요소는 비어있는 요소가 아니기 때문에 선택할 수 없습니다.

:last-child

모든 자식(child) 요소 중에서 요소 유형(타입)에 상관없이 마지막에 위치하는 자식(child) 요소를 모두 선택합니다.

:first-of-type

모든 자식(child) 요소 중에서 첫 번째로 등장하는 특정 요소를 모두 선택합니다.
컨테이너 안에서 특정 유형(타입)의 요소에서 첫 번째를 찾습니다.
예를 들어서 p:first-of-type은 부모의 첫 번째 자식이든 아니든 상관하지 않고 첫 번째 <p> 요소를 선택하게 됩니다.

:last-of-type

모든 자식(child) 요소 중에서 마지막으로 등장하는 특정 요소를 모두 선택합니다.
:first-of-type과 정확하게 동일하지만 컨테이너의 특정 유형(타입)의 요소에서 마지막을 찾습니다.

:only-child

자식(child) 요소를 단 하나만 가지는 모든 요소의 자식(child) 요소를 선택합니다.
만약 컨테이너에서 자식이 하나라면 그 요소를 선택하게 됩니다.

:only-of-type

자식(child) 요소 중 동일한 유형의 형제가 없는 요소를 선택합니다.
:only-child와 마찬가지입니다. 단지 해당 요소가 컨테이너에서 그 유형(타입)에서 유일한 하나라면 그 요소를 선택합니다.
예를 들어서 <div>가 하나의 <h1>과 하나의 <p>를 포함하고 있다면 이들 각각은 해당 유형(타입)이 유일한 요소일 것입니다.

:nth-child(n)

모든 자식(child) 요소 중에서 앞에서부터 n번째에 위치하는 자식(child) 요소를 모두 선택합니다.
:nth-child는 정수, 표현식, 키워드(odd:홀수, even:짝수)를 사용할 수 있습니다.
n은 0부터 시작하는 정수이며, 양수뿐만 아니라 음수도 사용할 수 있습니다.
0과 음수는 생략되기 때문에 2n+12n-1, 3n-23n+1은 결과적으로 같은 수열을 생성합니다.
:nth-child는 활용도가 높은 의사(가상) 클래스이지만, 복잡한 페이지 선택의 경우 혼란스러운 표현식보다 클래스를 직접 사용하는 것이 좋습니다.

n번째 유형별 설명
  1. :nth-child(odd) odd 키워드

    홀수(odd number) 인 요소 선택 (1, 3, 5 ...)

    :nth-child(2n+1) 과 동일

  2. :nth-child(even) even 키워드

    짝수(even number) 인 요소 선택 (2, 4, 6 ...)

    :nth-child(2n) 과 동일

  3. :nth-child(An+B) 기능표기법(A x n) + B

    일련의 형제의 숫자 위치가 An+B모든 양의 정수 또는 0의 값에 대해 패턴과 일치하는 요소(n)를 나타냅니다.

    (-1 x n) + 2 (-n+2 로도 표현할 수 있다)
    (-1 x 0) + 2 = 2 (두 번째 자식이 선택된다)
    (-1 x 1) + 2 = 1 (첫 번째 자식이 선택된다)
    (-1 x 2) + 2 = 0 (선택없음)

    :nth-child(3n + 3)

    3n은 "3xn"이고 전체 표현은 "(3xn) + 3"입니다. 0과 양의 정수로 대체하면 다음과 같습니다.

    (3 x 0) + 3 = 3 = 3 번째 Element
    (3 x 1) + 3 = 6 = 6 번째 Element
    (3 x 2) + 3 = 9 = 9 번째 Element

    :nth-child(3n + 3)

    "3n + 3" 대신 "3n + 0" 또는 더 간단한 "3n"을 사용하여 대체하면 다음과 같습니다.

    (3 x 0) = 0 = 일치하지 않음
    (3 x 1) = 3 = 3 번째 요소
    (3 x 2) = 6 = 6 번째 요소
    (3 x 3) = 9 = 9 번째 요소

    :nth-child(2n+1)

    (2 x 0) + 1 = 1 = 1 번째 Element
    (2 x 1) + 1 = 3 = 3 번째 Element
    (2 x 2) + 1 = 5 = 5 번째 Element

    :nth-child(4n-1)

    음수 n 값을 사용하고 표현식에서 빼기를 사용할 수 있습니다. 예를 들어, 4n-1

    (4 x 0)-1 = -1 = 일치하지 않음
    (4 x 1)-1 = 3 = 3 번째 요소
    (4 x 2)-1 = 7 = 7 번째 요소

    "-n"값을 사용하면 약간 이상하게 보일 수 있습니다. 최종 결과가 음수이면 일치하는 것이 없으므로 식을 다시 추가하여 다시 양수로 만들어야합니다.

    :nth-child(-n + 3)

    "-n + 3"으로 "first n elements"를 선택할 때 사용할 수 있습니다.

    -0 + 3 = 3 = 3 번째 요소
    -1 + 3 = 2 = 2 번째 요소
    -2 + 3 = 1 = 1 번째 요소
    -3 + 3 = 0 = 일치하지 않음

nth-child() 계산법 한눈에 보기
  • n
  • 2n+1
  • 4n+1
  • 4n+4
  • 4n
  • 5n-2
  • -n+3
  • 0

    1

    1

    4

    -

    -

    3

  • 1

    3

    5

    8

    4

    3

    2

  • 2

    5

    9

    12

    8

    8

    1

  • 3

    7

    13

    16

    12

    13

    -

  • 4

    9

    17

    20

    16

    18

    -

  • 5

    11

    21

    24

    20

    23

    -

  • n
  • 2n+1
  • 2n-1
  • 3n-2
  • 3n+1
  • -n+5
  • 0

    1

    -1

    -2

    1

    5

  • 1

    3

    1

    1

    4

    4

  • 2

    5

    3

    4

    7

    3

  • 3

    7

    5

    7

    10

    2

  • 4

    9

    7

    10

    13

    1

  • 5

    11

    9

    13

    16

    0

nth-child 예제1
nth-child 예제2

:nth-last-child(n)

모든 자식(child) 요소 중에서 뒤에서부터 n번째에 위치하는 자식(child) 요소를 모두 선택합니다.

:nth-of-type(n)

모든 자식(child) 요소 중에서 n번째로 등장하는 특정 요소를 모두 선택합니다.
:nth-child와 마찬가지로 모든 선택자 속성을 사용할 수 있습니다.
:nth-child와 차이점은 모든 속성이 아닌 선택한 요소 중에서 선택합니다.

:nth-last-of-type(n)

모든 자식(child) 요소 중에서 뒤에서부터 n번째로 등장하는 특정 요소를 모두 선택합니다.

UI 요소 상태 의사(가상) 클래스(UI element states pseudo-classes)

CSS Level 3 선택자
폼 요소에 사용되며, 체크 상태이거나 활성화 및 비활성 상태를 표현합니다.

:checked

선택 옵션 의사 클래스(Selected-option pseudo-class)
:checked<input> 요소 중에서 체크된(checked) 상태의 <input> 요소를 선택합니다.

:enabled

활성화된 의사 클래스(Enabled pseudo-class)
:enabled<input> 요소 중에서 사용할 수 있는 <input> 요소를 선택합니다.
기본 :enabled 상태로 표현됩니다.

:disabled

비활성화된 의사 클래스(Disabled pseudo-class)
:disabled<input> 요소 중에서 사용할 수 없는 <input> 요소를 선택합니다.

UI 요소 상태 의사(가상) 클래스 예제

대상 의사 클래스(Target pseudo-class)

CSS Level 3 선택자

:target

참조 URL의 대상인 E 요소를 선택합니다.
현재 활성화된 target 요소를 모두 선택합니다.
문서의 URI에서 부위 식별자(fragment identifier)의 목표가 되는 요소를 선택합니다.
예를 들어서 주소창에서 #demo가 URI의 끝부분에 나오게 된다면 :target을 사용하여 #demo라는 id를 가진 HTML상의 요소를 선택할 수 있습니다.

부정 의사 클래스(Negation pseudo-class)

CSS Level 3 선택자
셀렉터에 해당하지 않는 모든 요소를 선택합니다.
특정 항목을 선택하지 못하기 때문에 부정 의사 클래스라고 합니다.

:not(selector)

:not 선택자는 모든 선택자와 함께 사용할 수 있으며, 해당 선택자를 반대로 적용하여 선택합니다.
부정 의사 클래스라고 하며, selector를 제외한 모든 요소들을 선택할 때 사용할 수 있습니다.