특정 순서에 있는 요소 선택하는 방법 - :nth-child(), :nth-last-child()

nth-child와 nth-last-child는 특정 순서에 있는 요소를 선택할 때 사용하는 선택자입니다. nth-child는 앞에서부터 세고, nth-last-child는 뒤에서부터 셉니다. odd을 쓰면 홀수번째 요소가, even을 적으면 짝수번째 요소가 선택됩니다
5 min read

웹 문서에서 특정 부분에 스타일을 적용하려면 보통 class나 id 선택자를 이용해 이름을 붙여 주고 그 클래스아 id에 대한 스타일을 정의하면 됩니다. 하지만 여러 개의 항목이 일렬(가로나 세로)로 나열되 있는 경우, class나 id를 사용하지 않고 nth-child(n)이나 nth-last-child(n)을 사용하면 스타일을 지정할 항목이 몇 번째에 있는지를 따져 스타일을 적용할수 있습니다.

목차

:nth-child(n)

:nth-child()는 자식 요소 중에서 n 번째에 있는 모든 자식 요소를 선택할 때 사용합니다.

 

기본형

:nth-child( an+b )
  • ab는 정수입니다. 0과 음수도 가능합니다.
  • n에는 음이 아닌 정수, 즉 0, 1, 2, 3, …이 차례대로 대입됩니다.
  • an+b 대신에 even, odd를 넣을 수도 있습니다.
  • odd을 쓰면 홀수번째 요소가 선택됩니다.
  • even을 적으면 짝수번째 요소가 선택됩니다.

 

예제 1

  • n에 0, 1, 2, 3, …을 대입하면 3n+2은 2, 5, 8, 11, …이 됩니다.
  • 선택된 <li> 요소들을 빨간색으로 만듭니다.
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
</ul>
li:nth-child( 3n+2 ) {
  color: red;
}

 

예제 2

  • a를 음수로 정하면 선택하는 요소의 개수를 정할 수 있습니다.
  • -2n+5이면 n이 0일 때 5, n이 1일 때 3, n이 2일 때 1이므로 세 개의 홀수번째 요소가 선택됩니다.
li:nth-child( -2n+5 ) {
  color: red;
}

 

예제 3

  • a가 0이면 n에 어떤 값이 들어가도 b입니다. 0n+b라고 해도 되고, 그냥 b만 써도 됩니다.
  • 아래와 같이 하면 5번째 요소가 선택됩니다.
li:nth-child( 5 ) {
  color: red;
}

 

nth-last-child(n)

:nth-last-child()는 자식 요소 중에서 n 번째에 있는 모든 자식 요소를 선택할 때 사용합니다. :nth-child()와 다른 점은 뒤에서 부터 센다는 것입니다.

 

기본형

:nth-last-child( an+ b )
  • ab는 정수입니다. 0과 음수도 가능합니다.
  • n에는 음이 아닌 정수, 즉 0, 1, 2, 3, …이 차례대로 대입됩니다.
  • an+b 대신에 even, odd를 넣을 수도 있습니다.
  • odd을 쓰면 홀수번째 요소가 선택됩니다.
  • even을 적으면 짝수번째 요소가 선택됩니다.

 

예제 1

  • <li> 요소 중 뒤에서부터 3번째에 있는 것을 선택하고 빨간색으로 만듭니다.
<ul>
  <li>10</li>
  <li>9</li>
  <li>8</li>
  <li>7</li>
  <li>6</li>
  <li>5</li>
  <li>4</li>
  <li>3</li>
  <li>2</li>
  <li>1</li>
</ul>
li:nth-last-child( 3 ) {
  color: red;
}

 

예제 2

  • n에 0, 1, 2, 3, …을 대입하면 2n은 0, 2, 4, 6, …이 됩니다.
  • <li> 요소 중 뒤에서부터 그 순서에 있는 것을 선택하고 빨간색으로 만듭니다.
li:nth-last-child( 2n ) {
  color: red;
}

 

예제 3

  • n에 0, 1, 2, 3, …을 대입하면 3n-1은 -1, 2, 5, 8, …이 됩니다.
  • <li> 요소 중 뒤에서부터 그 순서에 있는 것을 선택하고 빨간색으로 만듭니다.
li:nth-last-child( 3n - 1 ) {
  color: red;
}

 

예제 4

  • n에 0, 1, 2, 3, …을 대입하면 n+8은 8, 9, 10, …이 됩니다.
  • <li> 요소 중 뒤에서부터 그 순서에 있는 것을 선택하고 빨간색으로 만듭니다.
li:nth-last-child( n + 8 ) {
  color: red;
}

 

:nth-of-type(n)

:nth-of-type()는 자식 요소 중에서 n 번째에 있는 특정 자식 요소를 선택할 때 사용합니다.

li:nth-of-type(4)
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>

 

:nth-last-of-type(n)

:nth-last-of-type()는 자식 요소 중에서 n 번째에 있는 특정 자식 요소를 선택할 때 사용합니다. :nth-of-type()와 다른점은 뒤에서 부터 센다는 것입니다.

li:nth-last-of-type(4)
<ul>
  <li>5</li>
  <li>4</li>
  <li>3</li>
  <li>2</li>
  <li>1</li>
</ul>

 

:first-child

자식 요소 중 첫번째 요소를 선택합니다.

li:first-child
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>

 

:last-child

자식 요소 중 마지막 요소를 선택합니다.

li:last-child
<ul>
  <li>5</li>
  <li>4</li>
  <li>3</li>
  <li>2</li>
  <li>1</li>
</ul>

 

:first-of-type

형제 요소 중 첫 번째 요소를 선택합니다.

li:first-of-type
<div>
  <ul>
    ... ...
    ... ...
  </ul>
  <p>Lorem</p>
  <p>Ipsum</p>
  <p>Dolor</p>
</ul>

 

:last-of-type

형제 요소 중 마지막 요소를 선택합니다.

li:last-of-type
<div>
  <ul>
    ... ...
    ... ...
  </ul>
  <p>Lorem</p>
  <p>Ipsum</p>
  <p>Dolor</p>
</ul>

 

:only-child

부모요소 안의 자식 요소가 유일하게 하나일 때 스타일을 지정합니다.

p:last-of-type

<p> 요소가 여러개이면 선택되지 않습니다.

<div>
  <p>Lorem</p>
  <p>Ipsum</p>
  <p>Dolor</p>
</div>

다른 자식 요소가 있으면 안됩니다.

예를 들면

<div>
  <p>Lorem</p>
</div>

일 때는 <p> 요소를 선택하지만,

<div>
  <p>Lorem</p>
  <ul>
    <li>Ipsum</li>
    <li>Dolor</li>
  </ul>
</div>

다른 자식 요소가 있으면 선택되지 않습니다.

 

:only-of-type

:only-child와 비슷한데 해당 요소가 유일한 요소일 때 스타일을 지정합니다.

p:only-of-type

<p> 요소가 여러개이면 선택되지 않습니다.

<div>
  <p>Lorem</p>
  <p>Ipsum</p>
  <p>Dolor</p>
</div>

다른 자식 요소가 있어도 됩니다.

예를 들면

<div>
  <p>Lorem</p>
</div>

일 때도 <p> 요소를 선택하고,

<div>
  <p>Lorem</p>
  <ul>
    <li>Ipsum</li>
    <li>Dolor</li>
  </ul>
</div>

일 때도 <p> 요소를 선택합니다.

 

기타 CSS 참조

You may like these posts

  • list-style-type 속성에서 순서 없는 목록 앞에 붙는 불릿의 유형이 단조로운 편입니다. 불릿의 모양을 더 다양하게 사용하고 싶다면 list-style-image 속성을 이용해 불릿을 원하는 이미지로 바꿀 수 있습니다. list-style-image list-style-image로 이미…
  • 웹 문서에서 특정 부분에 스타일을 적용하려면 보통 class나 id 선택자를 이용해 이름을 붙여 주고 그 클래스아 id에 대한 스타일을 정의하면 됩니다. 하지만 여러 개의 항목이 일렬(가로나 세로)로 나열되 있는 경우, class나 id를 사용하지 않고 nth-child(n)이나 nth-last-child…
  • 목록의 내용만 가운데 정렬하기 목록 안의 내용만 가운데 정렬할 때는 text-align 속성을 사용합니다. <ul> <li>Lorem Ipsum</li> <li>Dolor Amet</li> …
  • 순서 없는 목록의 경우, 목록 앞에 다양한 불릿(bullet)을 넣을 수 있고 순서 목록에서는 번호 스타일을 지정할 수 있습니다. 이때 list-style-type 속성을 이용합니다. list-style-type list-style-type으로 목록 앞의 점 모양 또는 형식을 바꿀 수 있습니다. &…
  • 목록을 만들 경우 목록 앞의 불릿이나 번호는 실제 내용의 바깥쪽에 표시됩니다. 하지만 list-style-position 속서을 이용하면 실제 내용이 시작되는 위치에 불릿이나 번호를 표시하기 때문에 결과 화면에는 불릿이나 번호가 좀 더 안쪽으로 들여 써진 듯한 효과가 나타납니다. 이렇게 하면 텍스트 문들들…

Post a Comment