loading
반응형

이번엔 자식 필터를 이용해서 실렉터를 지정해보자.

 

▶ 자식 필터(Child filters) 종류 ◀

선택자 설명
:first-child 부모의 첫 번째 자식인 모든 요소를 선택
:last-child 부모의 마지막 번째 자식인 모든 요소를 선택
:first-of-type 동일한 요소 이름의 형제 중 첫 번째 요소를 모두 선택
:last-of-type 동일한 요소 이름의 형제 중 마지막 번째 요소를 모두 선택
:nth-child(n) 부모의 n 번째 자식인 모든 요소를 선택
:nth-child(even) 부모의 짝수 번째 자식인 모든 요소를 선택
:nth-child(odd) 부모의 홀수 번째 자식인 모든 요소를 선택
:nth-child(Xn+Y) 부모의 Y 번째 요소부터 시작선택하여 Xn 마다 요소를 전부 선택
:nth-last-child(n) 부모의 마지막 요소로부터 n 번째 자식인 모든 요소를 선택
:nth-last-child(even)  부모의 마지막 요소로부터 짝수 번째 자식인 모든 요소 선택
:nth-last-child(odd)  부모의 마지막 요소로부터 홀수 번째 자식인 모든 요소 선택
:nth-last-child(Xn+Y)  부모의 마지막 요소로부터 Y 번째 요소부터 시작선택하여 Xn 마다 요소를 전부 선택
:nth-of-type(n) 동일 요소 이름의 형제중 n 번째 요소를 모두 선택
:nth-of-type(even) 동일 요소 이름의 형제중 짝수 번째 요소를 모두 선택
:nth-of-type(odd) 동일 요소 이름의 형제중 홀수 번째 요소를 모두 선택
:nth-of-type(Xn+Y) 동일 요소 이름의 형제중 Y 번째 요소부터 시작선택하여 Xn 마다 요소를 전부 선택
:nth-last-of-type(n) 동일 요소 이름의 형제중 마지막 번째로부터  n 번째 요소를 모두 선택
:nth-last-of-type(even) 동일 요소 이름의 형제중 마지막 번째로부터 짝수 번째 요소를 모두 선택
:nth-last-of-type(odd) 동일 요소 이름의 형제중 마지막 번째로부터 홀수 번째 요소를 모두 선택
:nth-last-of-type(Xn+Y) 동일 요소 이름의 형제중 마지막 번째로부터 Y 번째 요소부터 시작선택하여 Xn 마다 요소를 전부 선택

 

자식 필터를 이용한 선택자의 종류가 엄청 많다. 

자, 이제부터 하나씩 어떻게 동작되는지 파헤쳐보자!!

 

예제 HTML CODE

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  <title>JS Bin</title>
  
  <script>
    $(document).ready(function(){
        // 코드 넣는 곳
    });  
  </script>
</head>
<body>

  <div>
    <p>1번 콘텐츠 </p>
    <p>2번 콘텐츠 </p>
    <p>3번 콘텐츠 </p>
    <p>4번 콘텐츠 </p>
    <p>5번 콘텐츠 </p>
  </div>
  
  <div>
    <p>6번 콘텐츠</p>
    <p>7번 콘텐츠</p>  
    <p>8번 콘텐츠</p>  
    <p>9번 콘텐츠</p>  
  </div>
  
  <div>
    <ul>
      <li>10번 콘텐츠</li>
      <li>11번 콘텐츠</li>
      <li>12번 콘텐츠</li>
    </ul>
    
    <ul>
      <li>13번 콘텐츠</li>
      <li>14번 콘텐츠</li>
      <li>15번 콘텐츠</li>
    </ul>
  </div>

  <div>
      <p>16번 콘텐츠</p>
      <p>17번 콘텐츠</p>
      <p>18번 콘텐츠</p>
      <p>19번 콘텐츠</p>
      <p>20번 콘텐츠</p>
      <p>21번 콘텐츠</p>
      <p>22번 콘텐츠</p>
  </div>

  <div>
    <p>23번 콘텐츠</p>
    <p>24번 콘텐츠</p>  
    <p>25번 콘텐츠</p>  
    <p>26번 콘텐츠</p>  
  </div>

</body>
</html>

▶ :first-child와 :last-child 사용법

$('div:first-child').css({'color':'red'}); // - 1번
$('div p:first-child').css({'color':'red'}); // - 2번

이 두 개 코드를 테스트를 해보고 어떻게 동작하는지 확인해보자.

둘 중 하나는 주석 처리하고 위 HTML 코드 중 // 코드 넣는 곳  주석처리되어 있는 곳에 위 2개 의 코드를 넣고 

테스트를 하면 된다.

 

1번  결과  - $('div:first-child'). css({'color':'red'});

선택자가 div 요소 중 first-child 니까 첫 번째 div의 모든 자식이 다 선택되었다.

1번 결과

 

 

2번 결과 - $('div p:first-child'). css({'color':'red'});

div p 가 선택 자니까 각각 div 요소 중 p요소의 첫 번째 요소가 모두 선택되었다.

2번 결과

 

 

 

$('div:last-child').css({'color':'red'}); // - A
$('div p:last-child').css({'color':'red'}); // - B

 

A 결과 $('div:last-child'). css({'color':'red'});

당연히 마지막 div 요소의 모든 요소가 선택되었다.

A 결과

 

 

B 결과 $('div p:last-child'). css({'color':'red'});

각 div 요소 안에 p 요소의 마지막 번째의 요소들이 전부 선택되었다.

B 결과

 

 


▶ :first-of-type와 :last-of-type 사용법

$('ul li:first-of-type').css({'color':'red'}); // - 1번
$('ul li:last-of-type').css({'color':'red'}); // - 2번

 

1번 결과 $('ul li:first-of-type'). css({'color':'red'});

동일 li 요소 중 첫 번째 요소 전부 선택되었다.

1번 결과

 

 

 

2번 결과 $('ul li:last-of-type'). css({'color':'red'});

동일 li 요소 중 마지막 번째 요소 전부 선택되었다.

2번 결과

 

 

반응형

▶ :nth-child(n), :nth-child(even) , :nth-child(odd), :nth-child(Xn+Y) :nth-last-child(n), :nth-last-child(even), :nth-last-child(odd), :nth-last-child(Xn+Y) 사용법

의미는 같으나 처음 시작의 위치가 반대
:nth-child(n) :nth-last-child(n)
:nth-child(even) :nth-last-child(even)
:nth-child(odd) :nth-last-child(odd)
:nth-child(Xn+Y) :nth-last-child(Xn+Y)

 

여기서는 빨간색 글자로 되어 있는 선택자들만 확인해보자.

행동하는 의미는 같으나 요소의 시작 위치가 반대라고 생각하면 된다.

 

:nth-child(n) 결과

$('div:nth-child(3)').css({'color':'red'}); // 실행 테스트 코드

선택자는 3번째 div 자식의 모든 요소를 선택되었다. 

 

:nth-child(n) 결과

 

:nth-child(Xn+Y) 결과

$('div p:nth-child(3n+1)').css({'color':'red'}); // 실행 테스트 코드

테스트를 들어가기 전에 선택자가 어떻게 동작하는지 확인해보면, div의 p 태그 요소들 중

3n+1의 의미는 숫자 1은 첫 번째 요소를 포함 선택하여 그 후 3개의 요소마다 모두 선택 의미이다.

 

:nth-child(Xn+Y)&amp;nbsp;결과

 

 

:nth-last-child(even) 결과

$('div:nth-last-child(even)').css({'color':'red'});

 

div 요소의 마지막 자리가 시작점 위치로부터 짝수의 div 자식 요소를 모두 선택되었다.

 

:nth-last-child(even)&amp;nbsp;결과

 

 

:nth-last-child(odd) 결과

$('div:nth-last-child(odd) ').css({'color':'red'});

 

div 요소의 마지막 자리가 시작점 위치로부터 홀수의 div 자식 요소를 모두 선택되었다.

 

:nth-last-child(odd) 결과

 


▶ :nth-of-type(n), :nth-of-type(even), :nth-of-type(odd), :nth-of-type(Xn+Y), :nth-last-of-type(n), :nth-last-of-type(even), :nth-last-of-type(odd), :nth-last-of-type(Xn+Y) 사용법

의미는 같으나 처음 시작의 위치가 반대
:nth-of-type(n) :nth-last-of-type(n)
:nth-of-type(even) :nth-last-of-type(even)
:nth-of-type(odd) :nth-last-of-type(odd)
:nth-of-type(Xn+Y) :nth-last-of-type(Xn+Y)

 

이번 것도 빨간색 글자 선택자만 확인해보자. even, odd, Xn+Y 내용은 이 전과 동일하니

nth-of-type 이 선택자는 동일 요소의 형제라 생각하면 된다.

 

:nth-of-type(n) 결과

$('div:nth-of-type(2)').css({'color':'red'});

 

div 동일 요소중 2번째 모든 요소가 선택되었다.

 

:nth-of-type(n) 결과

 

 

 

:nth-last-of-type(Xn+1) 결과

$('p:nth-last-of-type(2n+1)').css({'color':'red'});

 

p 태그 동일 모든 요소가 마지막 위치점 으로부터 (2n+1) 중에 1은 첫 번째 자리 선택 포함으로부터

시작하여 2마다 요소를 모두 선택되었다.

 

:nth-last-of-type(Xn+1) 결과

 

반응형

+ Recent posts