CSS 선택자 level 3 part-2 - by. UXKM

요약 설명

CSS 선택자 level 3 part-1 에서는
의사(가상) 클래스(Pseudo-classes)에 대한 내용을 다루고 있습니다.

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

3.1.3.1. 구조적 의사(가상)클래스(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) 요소를 모두 선택합니다.
n번째 자식 의사(가상) 클래스는 정수와 표현식뿐만 아니라 두 개의 짧은 키워드(odd:홀수, even:짝수) 중 하나를 선택할 수도 있습니다.
n번째 자식 의사(가상) 클래스는 지금까지 사용했던 양수뿐만 아니라 음수도 사용할 수도 있습니다.
n은 0부터 시작하는 정수입니다.
0과 음수는 생략되기 때문에 2n+1과 2n-1, 3n-2와 3n+1은 결과적으로 같은 수열을 생성합니다.
:nth-child 사용은 해당 요소를 필요에 따라 적절하게 사용하여 활용도가 높은 의사(가상) 클래스입니다.
다만 복잡한 페이지 선택의 경우 HTML에서 혼란스러운 :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번째로 등장하는 특정 요소를 모두 선택합니다.

3.1.3.2. 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 상태로 표현됩니다.
:enabled{/* style 작성 */}

:disabled

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

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

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

CSS Level 3 선택자

:target

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

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

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

:not(selector)

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