특정 순서에 있는 요소 선택하는 방법 - :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

  • 웹 문서에서 사용하는 여러 태그들은 서로 포함 관계가 있습니다. 포함하는 태그를 부모 요소, 포함된 태그를 자식 요소라고 합니다. 스타일 시트에서는 자식 요소에서 별도로 스타일을 지정하지 않으면 부모 요소에 있는 스타일 속성들이 자식요소로 전달되는데 이것을 '스타일 상속'이라고 합니다. 상속(inh…
  • HTML로는 웹 사이트의 내용을 나열하고 CSS로는 웹 문서의 디자인을 구성한다는 아이디어가 바로 웹 표준의 시작입니다. 이렇게 내용과 디자인이 구분되어 있기 때문에 사이트의 내용을 수정해야할 때도 디자인에 전혀 영향을 미치지 않고 내용만 수정할 수 있습니다. 또한 반대로 내용은 건드리지 않은 상태에서 스…
  • !important CSS는 같은 속성을 여러 번 정의했을 때,나중에 설정한 값이 우선 순위로 적용됩니다. 만약 나중에 설정한 값이 적용되지 않게 하려면 !important를 속성값 뒤에 붙입니다.   기본형 selector { property: value !important; …
  • 사용자가 웹 요소를 클릭하거나 마우스 커서를 올려놓는 등 특정 동작을 할 때 스타일이 바뀌도록 만들거나 웹 요소의 상태에 따라 스타일을 지정할 때 가상 클래스 선택자를 사용합니다. 목차 사용자 동작에 반응하는 가상 클래스 다음 가상 클래스 선택자들은 가상 클래스 선택자 중 자주 사…
  • 선택자로도 지정하기 어려운 대상이 있습니다. 예를 들어 몇 번째 항목이라든가 문단의 첫 번째 글자 등의 경우 어떻게 지정해야 할까요? 이럴 때 가상 요소와 가상 클래스를 사용합니다. 가상 요소는 내용의 일부만 선택해 스타일을 적용할 때 사용합니다. 목차 가상 요소 가상 요소(Ps…
  • 가상 선택자를 링크와 관련해 사용할 때는 선택자 순서에 주의해야 합니다. 순서가 바뀌면 스타일을 정의하더라고 제대로 적용되지 않습니다. 가상 요소와 가상 클래스 순서 가상 요소를 이용하면 특정 요소 앞에 텍스트이나 이미지를 넣을 수 있습니다. HTML을 변경하지 않고 요소를 추가할…

Post a Comment