이러한 선택자, 보다 구체적으로 :nth-child 라는 의사 클래스가 있습니다. 다음은 사용 예입니다.

UL LI:n번째-자식(3n+3) (색상:#CCC; )

위의 CSS는 무엇을 합니까? 글머리 기호 목록 내의 모든 세 번째 요소(3번째, 6번째, 9번째, 12번째 등)를 선택합니다. 이 표현식이 정확히 어떻게 작동하는지, 그리고 :nth-child 로 무엇을 할 수 있는지 봅시다.

그것은 모두 대괄호 사이에 무엇이 있는지에 달려 있습니다. :nth-child 선택기는 even 과 odd 의 두 가지 키워드를 허용합니다. 여기에서는 간단합니다. even은 2번째, 4번째, 6번째 등과 같은 짝수 요소를 선택하고 홀수는 1번째, 3번째, 5번째 등과 같은 홀수 요소를 선택합니다. d.

첫 번째 예에서 볼 수 있듯이 :nth-child는 표현식도 매개변수로 받아들입니다. 가장 단순한 방정식, 즉 숫자만 포함합니다. 대괄호로 묶으면 해당 번호의 요소 하나만 선택됩니다. 예를 들어 다섯 번째 요소만 선택하는 방법은 다음과 같습니다.

UL LI:nth-child(5) (색상:#CCC; )

그러나 첫 번째 예에서 3n+3으로 돌아가 보겠습니다. 어떻게 작동하며 모든 세 번째 요소가 선택되는 이유는 무엇입니까? 전체 트릭은 변수 n과 축소 대수 방정식을 이해하는 것입니다. n을 0부터 시작하는 정수 집합으로 생각하십시오. 그런 다음 방정식을 완성하십시오. 따라서 3n 은 3×n 이고 전체 방정식은 (3×n)+3 입니다. 이제 n 대신 0보다 크거나 같은 숫자를 대입하면 다음을 얻습니다.

  • (3 × 0) + 3 = 3 = 세 번째 요소
  • (3 × 1) + 3 = 6 = 6번째 요소
  • (3 × 2) + 3 = 9 = 9번째 요소 등

nth-child(2n+1) 은 어떻습니까?

  • (2 × 0) + 1 = 1 = 첫 번째 요소
  • (2×1) + 1 = 3 = 세 번째 요소
  • (2 × 2) + 1 = 5 = 5번째 요소 등

그래, 그만! 그것은 이상한 것과 같습니다. 그러면 이 표현을 쓰면 안 되지 않을까요? 그러나 이 경우 첫 번째 예를 지나치게 복잡하게 만들고 있지 않습니까? 3n+3 대신 3n+0 또는 더 간단한 3n을 쓰면 어떻게 될까요?

  • (3 × 0) = 0 = 없음
  • (3 × 1) = 3 = 세 번째 요소
  • (3 × 2) = 6 = 6번째 요소
  • (3 × 3) = 9 = 9번째 요소 등

따라서 보시다시피 결과는 동일하므로 +3 이 필요하지 않습니다. 방정식에서 빼기뿐만 아니라 n의 음수 값을 사용할 수 있습니다. 예를 들어, 4n-1:

  • (4 × 0) - 1 = -1 = 없음
  • (4 × 1) - 1 = 3 = 세 번째 요소
  • (4 × 2) - 1 = 7 = 7번째 요소 등

-n을 사용하면 이상하게 보일 수 있습니다. 최종 결과가 음수이면 선택 항목에 포함되는 요소가 없기 때문입니다. 그러나 방정식을 보완하고 결과를 다시 양수로 만들면 샘플이 매우 흥미로워질 것입니다. 예를 들어 -n + 3과 같이 처음 n개의 요소를 얻을 수 있습니다.

  • –0 + 3 = 3 = 세 번째 요소
  • –1 + 3 = 2 = 두 번째 요소
  • -2 + 3 = 1 = 첫 번째 요소
  • -3 + 3 = 0 = 없음 등

SitePoint에는 멋진 표지판이 있는 멋진 가이드가 있으며 여기에 뻔뻔하게 게시할 것입니다.

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

브라우저 지원

:nth-child 선택기는 에서 거의 완벽하게 지원되는 몇 안 되는 CSS 선택기 중 하나입니다. 최신 브라우저 IE8이 아닌 IE에서는 절대 지원되지 않습니다. 그래서 그것을 사용할 때 그리고 최종 결과가 점진적인 향상일 때 테이블 행 색칠과 같은 일부 인쇄 요소에 안전하게 사용할 수 있습니다. 그러나 더 심각한 경우에는 사용하지 않아야 합니다. 예를 들어, 사이트 레이아웃에 의존하거나 3x3 그리드의 모든 세 번째 블록에서 오른쪽 여백을 제거하여 행에 맞도록 합니다.

CSS n번째 자식숫자 표현식을 사용하여 요소를 선택하는 데 사용되는 의사 클래스입니다. 이 구문은 언뜻 보기에 다소 혼란스러워 보일 수 있습니다.

이 기사에서는 다음을 살펴볼 것입니다.

  • 다양한 사용 방법 :nth-child ;
  • 더 유연함:nth-of-type 선택기;
  • 및 관련 :nth-last-child 및 :nth-last-of-type 선택기.

:n번째 마지막 유형

:nth-last-of-type은 문서에서의 위치가 대수식에서 설명하는 패턴과 일치하는 경우 자식 요소를 선택합니다.

:nth-last-of-type 선택기는 다음과 같습니다.

li:nth-child(표현식); ()

"식"은 키워드 even 또는 odd, 정수 또는 an+b와 같은 수식으로 나타낼 수 있습니다. 여기서 a 및 b는 양수 또는 음수 정수입니다.

CSS 의사 클래스 n 번째 자식을 사용하여 범위를 선택할 수 있기 때문에 다양한 요소. 좀 더 명확하게 하기 위해 몇 가지 예를 살펴보겠습니다.

나는 가지고있다 글머리 기호 목록 12개의 요소 중 패턴에서 특정 요소 또는 요소 집합을 선택하기 위해 :nth-child를 사용하는 방법을 살펴보겠습니다.

  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨
  • 로렘 입숨

목록의 세 번째 요소를 선택하려면 li:nth-child(3) 를 지정해야 합니다. even 키워드를 사용하여 모든 짝수 요소를 선택할 수 있습니다. 반대로 :nth-child(odd)를 사용하여 모든 홀수 요소를 선택할 수 있습니다.

3번째마다 CSS n번째 자식 - li:nth-child(3n) 를 지정합니다. 처음 네 개의 요소를 선택하려면 li:nth-child(-n+4) 를 사용하십시오. 처음 4개 요소를 제외한 모든 요소를 ​​선택하려면 li:nth-child(n+5)를 사용할 수 있습니다.

표현식 + b

홀수 키워드를 사용하는 대안은 2n+1 표현식을 사용하는 것입니다. 하지만 어떻게 작동합니까?

an+b 표현식에 a 와 b 의 0이 아닌 값이 포함되어 있으면 자식 요소가 그룹으로 분할됩니다. 표현식이 2n+1 이면 자식 요소는 두 그룹으로 나뉩니다. 그룹의 각 요소에는 1부터 시작하는 인덱스가 할당됩니다. 각 그룹의 해당 요소는 인덱스 번호 b입니다. 이 예에서는 이것이 첫 번째 요소가 됩니다.

표현식이 3n+2 인 경우 요소는 세 개의 요소로 그룹화되고 각 그룹의 두 번째 요소는 표현식과 일치합니다.

b 값이 음수이면 그룹에서 일치하는 요소는 인덱스 b 에 있는 요소입니다. 그러나 인덱스 1부터 거꾸로 계산됩니다. 이 경우 해당 요소는 여기에 속하지 않고 이전 그룹에 속합니다.

CSS n번째 자식의 even 키워드는 2n으로 표현할 수 있습니다. 이 경우 b에 대한 값이 없으므로 인덱스 a가 있는 그룹의 모든 요소가 선택됩니다. 2n은 두 번째 요소마다 선택하고, 3n은 세 번째 요소마다 선택하고, 4n은 네 번째 요소마다 선택하는 식입니다.

개인적으로 자식 요소를 그룹으로 분할하고 각 그룹에 대한 일치 색인을 찾는 개념이 매우 혼란스럽습니다. 이것이 CSS 선택기 사양에서 설명하는 방식입니다.

나는 모든 n번째 요소(2번째, 3번째 또는 4번째 등)를 검색하는 개념을 선호합니다. 그리고 나서 표현식의 두 번째 부분이 오프셋이라고 상상하는 것이 더 쉽습니다.

2n+1의 경우 이 표현을 다음과 같이 읽습니다. 모든 두 번째 요소를 찾아 선택 영역을 1씩 아래로 이동».

표현식이 3n-5 이면 다음과 같이 읽힙니다. " 세 번째 요소를 모두 찾아 선택 영역을 5만큼 위로 이동».

기타 선택자: n번째 자식

:nth-child 에는 반대 방향으로 작동하는 해당 의사 클래스 :nth-last-child 가 있습니다.

li:nth-last-child(3n)는 마지막에서 시작합니다. 자식 요소목록 끝에서 모든 세 번째 요소와 일치하도록 역방향으로 처리합니다.

이 의사 클래스는 덜 일반적입니다. 그러나 첫 번째 또는 마지막 자식 요소를 선택해야 하는 경우가 많습니다. 이것은 :nth-child(1) 또는 :nth-last-child(1) 로 수행할 수 있지만 이 방법은 :first-child 및 :last-child 의사 클래스만큼 일반적이지 않습니다. 그러나 IE8에서는 :first-child만 작동하고 :last-child 및 :nth 선택기는 작동하지 않습니다.

:n번째 유형

종종 나를 괴롭히는 것은 CSS n번째 자식 의사 클래스가 자식 요소를 인덱스별로 정렬하고 요소의 유형을 고려하지 않는다는 것입니다.

다음 예를 고려하십시오.

로렘 입숨;

Aenean commodo ligula eget dolor. 전정 dapibus nunc ac augue;

눈씨 세드 투피스. Donec posuere vulputate arcu;

제목, 부제목 및 여러 단락이 있는 섹션이 있습니다. 첫 번째 단락이 1.5em 의 더 큰 글꼴 크기로 조금 눈에 띄기를 원합니다.

해당 섹션의 첫 번째 단락에 몇 가지 추가 스타일을 추가해야 하므로 섹션 p:first-child 코드를 사용해 볼 수 있습니다. 그러나 섹션의 첫 번째 자식이 h1 이므로 작동하지 않습니다. 이 경우 :first-of-type 선택기를 사용해야 합니다.

존재 전선이 유형의 선택자는 :first-of-type , :last-of-type , :nth-of-type 및 :nth-last-of-type 입니다. 그것들은 :nth-child처럼 행동하지만 특정 유형의 요소의 n번째 인스턴스를 선택합니다.

설명

:nth-child 의사 클래스는 요소 트리의 번호 지정을 기반으로 요소에 스타일을 추가하는 데 사용됩니다.

통사론

요소:n번째-자식(홀수 | 짝수 |<число> | <выражение>) {...}

가치

홀수 모든 홀수 요소 번호. 짝수 모든 짝수 요소 번호. number 부모를 기준으로 한 자식의 서수입니다. 번호 매기기는 목록의 첫 번째 요소가 되는 1부터 시작합니다. expression an+b 로 지정됩니다. 여기서 a와 b는 정수이고 n은 0, 1, 2... 값을 자동으로 취하는 카운터입니다.

a 가 0이면 기록되지 않고 표기법이 b 로 축소됩니다. b가 0이면 역시 생략되고 표현식은 형식으로 작성됩니다. a 및 b는 음수가 될 수 있으며, 이 경우 더하기 기호가 빼기로 변경됩니다(예: 5n-1).

및 b에 음수 값을 사용하면 일부 결과가 음수 또는 0이 될 수도 있습니다. 그러나 요소 번호는 1부터 시작하기 때문에 요소는 양수 값에만 영향을 받습니다.

테이블에서. 1은 몇 가지 가능한 표현을 보여주고 키워드, 또한 관련 항목 번호를 나타냅니다.

HTML5 CSS3 IE Cr Op Sa Fx

n번째 아이

21342135 213621372138
기름1634 627457
469 725647
목재773 793486
2334 8853103

이 예:nth-child 의사 클래스는 테이블의 첫 번째 행의 스타일을 변경하고 모든 짝수 행에 색상을 지정하는 데 사용됩니다(그림 1).

제 블로그에 오신 것을 환영합니다. 저는 오늘 CSS에서 첫 번째 부모 요소를 선택하는 방법에 대해 글을 쓰고 싶습니다. 이렇게 하면 더 적은 수의 스타일 클래스를 사용할 수 있기 때문입니다.

유사 클래스: 첫 번째 자식과 첫 번째 유형의 차이점은 무엇입니까?

CSS에서 부모 컨테이너의 첫 번째 요소를 참조하기 위해 두 개의 의사 클래스가 발명되었습니다. 나는 즉시 당신이 이해할 수 있도록 예를 들어 모든 것을 고려할 것을 제안합니다.

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

그런 마크 업이 있다고 가정 해 봅시다. 목표는 첫 번째 단락을 참조하고 클래스를 추가하지 않고 다른 단락과 별도로 스타일을 지정하는 것입니다. 이것은 다음과 같이 할 수 있습니다.

#wrapper p:첫 번째 자식(
색상: 빨간색;
}

첫 번째 단락의 색상이 빨간색으로 변하는 것을 확인할 수 있습니다.

#wrapper p:first-of-type(
색상: 빨간색;
}

같은 일이 일어날 것입니다. 그래서 차이점은 무엇입니까? 그리고 첫 번째 유형 의사 클래스가 해당 유형이 주어지면 부모의 첫 번째 요소를 검색하고 찾는 사실에 있으며 first-child는 아무 것도 찾지 않습니다. 단락인 경우 스타일을 적용합니다. 그렇지 않은 경우 아무 것도 선택 및 적용되지 않습니다.

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

이것은 단락입니다

이제 다음을 고려하십시오. 이 경우 첫 번째 유형이 작동합니까? 예, 요소 유형을 고려하고 모든 요소의 첫 번째 단락이 아닌 첫 번째 단락을 선택하기 때문입니다. 첫째 아이가 일할까요? 시도 해봐. 단락이 부모의 첫 번째 요소가 아니기 때문에 작동하지 않습니다.

개인적으로 이러한 유사 클래스의 차이점을 즉시 이해하지 못하고 잠시 혼란스러웠지만 이제 정상적으로 설명이 되었기를 바랍니다.

또 다른 중요한 세부 사항

요소는 상위 요소에서 계산되므로 다음과 같이 지정한 경우:

Li:최초(

}

그런 다음 body 태그(즉, 전체 페이지)의 첫 번째 목록 항목이 선택됩니다. 따라서 모든 목록에서 첫 번째 항목의 형식이 다르게 지정됩니다.
다음과 같이 작성하면:

#sidebar li:최초 유형(

}

그러면 사이드바에 있는 목록의 첫 번째 항목, 즉 사이트의 사이드 열만 선택됩니다.

내가 쓴 다양한 선택기를 사용하면 웹 페이지의 거의 모든 요소에 접근할 수 있습니다. 이 기사에서는 CSS에서 n번째 자식 의사 클래스를 사용하는 방법에 대해 자세히 읽을 수 있으며 요소 선택 측면에서 옵션을 제공합니다.

그건 그렇고, 나는 반대 의사 클래스인 last-child(각각 last-of-type)를 언급하는 것을 잊었습니다. 부모 컨테이너에서 마지막 요소를 선택할 수 있습니다.

실천할 수 있는 곳

나는 이러한 의사 클래스에 대해 씁니다. CSS. 예를 들어, 유사한 게시물, 댓글 또는 기타 항목의 블록이 페이지에 있습니다. 그리고 첫 번째 요소를 특별한 방식으로 장식하고 싶은 생각이 들었습니다. 아니면 마지막일 수도 있습니다. 예, 누구나 할 수 있습니다.

원하는 요소가 저장된 블록의 이름을 찾기만 하면 됩니다. 우리가 인기있는 레코드를 다루고 있다고 가정 해 봅시다. 상위 컨테이너에는 인기 있는 클래스가 있습니다. 그런 다음 다음과 같이 작성합니다.

인기있는 li:first-of-type(
패딩 상단: 20px
}

목록의 첫 번째 항목인 Everything은 위에서 들여쓰기를 받았고 스타일에 원하는 것을 추가할 수 있습니다.

여기 또 다른 예가 있습니다. body 태그에는 동일한 회색 블록이 세 개뿐입니다. 이렇게 작성해 봅시다.

의사 클래스를 사용하여 목록에서 특정 요소를 선택할 수 있습니다. 이 튜토리얼에서 우리는 :nth-child 의사 클래스, 이 의사 클래스로 무엇을 만들 수 있는지, 그리고 그것이 어떻게 유용할 수 있는지에 대해 이야기할 것입니다. :nth-child 의사 클래스를 사용하면 공통 속성을 가진 요소 그룹을 선택할 수 있습니다. 그룹에서 짝수 또는 홀수 요소를 선택하는 데 가장 일반적으로 사용됩니다. 홀수 행과 짝수 행에 서로 다른 배경색을 부여하여 테이블을 얼룩말처럼 보이게 하는 데 자주 사용됩니다.

tr:nth-child (odd) ( // 배경색 ) tr:nth-child (even) ( // 다른 배경색 )

:nth-child 의사 클래스를 사용하면 공통 속성을 가진 요소를 그룹으로 나눈 다음 다음 구문을 사용하여 각 그룹에서 특정 요소를 선택할 수도 있습니다.

Tr:n번째 자식(an+b)( )

여기 그룹의 요소 수를 결정하고 그룹에서 선택할 요소를 결정합니다. 값을 사용하는 경우 2n+1, 그러면 요소가 2개의 그룹으로 나뉘고 각 그룹의 첫 번째 요소, 즉 홀수 ​​서수가 있는 요소가 선택됩니다. 값을 사용하는 경우 2n+2, 그러면 요소가 다시 두 그룹으로 나뉘지만 이제 각 그룹의 두 번째 요소, 즉 일련 번호가 짝수인 요소가 선택됩니다.

:nth-child 의사 클래스를 이해하기 위한 예로서, 네 번째 요소, 즉 네 번째, 여덟 번째, 열두 번째, 열여섯 번째 등 모든 요소를 ​​선택합니다. 이를 위해 요소를 4개의 그룹으로 나누고 그런 다음 네 번째 요소마다 선택하십시오.

Tr:nth-child (4n+4 ) ( // 네 번째 요소마다 스타일 지정 )

아래는 10개의 요소 목록이며, 강조 표시하려는 요소를 선택하기 위해 :nth-child , :first-child 및 :last-child 의사 클래스를 사용합니다.

CSS:nth-child 의사 클래스를 사용하여 단일 요소 선택

:nth-child 의사 클래스를 숫자로 설정하여 참조할 그룹의 자식을 선택할 수 있습니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (4 ) ( 글꼴 크기: 150

CSS:nth-child 의사 클래스를 사용하여 처음 5개를 제외한 모든 요소 선택

:nth-child 의사 클래스를 다음 형식의 값으로 설정하면 엔+번호를 사용하면 다음 서수를 가진 요소부터 시작하여 모든 요소를 ​​선택할 수 있습니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (n+6 ) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:nth-child 의사 클래스를 사용하여 처음 5개 요소만 선택

:nth-child 의사 클래스를 음수 값으로 설정할 때 엔+ number, 우리는 이 서수를 가진 요소 앞에 있는 모든 요소를 ​​선택합니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (-n+5 ) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:nth-child 의사 클래스를 사용하여 모든 세 번째 요소 선택

:nth-child 의사 클래스는 시퀀스에 있는 요소 수와 원하는 요소의 서수를 지정하여 요소 시퀀스를 선택하는 데 사용할 수 있습니다. 값을 설정하면 3n+1, 첫 번째 요소부터 시작하여 모든 세 번째 요소가 선택됩니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (3n+1 ) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:nth-child 의사 클래스를 사용하여 홀수 요소만 선택

:nth-child 의사 클래스를 홀수로 설정하여 서수가 홀수인 모든 요소를 ​​선택할 수 있습니다. 즉, 첫 번째, 세 번째, 다섯 번째, 일곱 번째, 아홉 번째 등의 요소입니다. 이것은 인접한 테이블 행의 색상을 설정하는 데 매우 편리합니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (홀수) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:nth-child 의사 클래스를 사용하여 짝수 요소만 선택

이 예제는 마지막 예제와 동일하지만 이번에는 모든 짝수 요소가 선택됩니다. 즉, 두 번째, 네 번째, 여섯 번째, 여덟 번째, 열 번째 등의 요소:

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-child (짝수) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:first-child 의사 클래스를 사용하여 첫 번째 요소 선택

또 다른 유사 클래스:first-child는 첫 번째 요소를 선택합니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:first-child ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS:last-child 의사 클래스를 사용하여 마지막 요소 선택

:first-child 의사 클래스 외에도 요소 그룹에서 마지막 요소를 선택하는 :last-child 의사 클래스가 있습니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:last-child ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

CSS pseudo-class:nth-last-child를 사용하여 끝에서 두 번째 요소 선택

:last-child 및 :nth-child 의사 클래스의 기능을 결합하여 끝에서 요소 계산을 시작하는 :nth-last-child 의사 클래스를 사용할 수도 있습니다. 즉, 계산하여 요소를 선택할 수 있습니다. 시퀀스 번호예를 들어 10개의 요소로 구성된 그룹에서 그룹 끝에서 끝에서 두 번째 요소를 선택할 수 있습니다.

요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

#selector_example li:nth-last-child (2 ) ( 글꼴 크기: 150 %; 글꼴 두께:굵게 ; 색상: 녹색 ; )

"를 사용하여 :nth-child 의사 클래스를 확인하십시오.