CSS 고급 셀렉터 CSS3 Advanced Selectors and pseudo class

<style>
  div p {   } // div 내의 모든 p 선택
  h3 - p {  } // h3가 포함되어 있는 div 내의 모든 p 선택
  h3 + p {  } // h3가 포함되어 있는 div 내의 첫번째 p 선택
</style>

<div>
  <p>a</p>
  <p>b</p>
  <p>c</p>
</div>

<div>
  <h3>H3 heading</h3>
  <p>d</p>
  <p>e</p>
  <p>f</p>
</div>

  • div p { } // div 내의 모든 p 선택: a,b,c,
  • h3 - p { } // h3가 포함되어 있는 div 내의 모든 p 선택: d,e,f
  • h3 + p { } // h3가 포함되어 있는 div 내의 첫번째 p 선택: d
<style>
  a[target] {   } // a 의 target attribute 가 있는 모든 a 선택
  a[href*=“google”] {   } // a 의 href attribute 가 google 이 포함되어 있는 모든 a 선택
</style>

<div>
  <a href=“” target=“_blank”> target blank1 </a>
  <p>b</p>
  <a href=“http://www.google.net”> google.net </a>
</div>

<div>
  <h3>H3 heading</h3>
  <a href=“http://www.google.com”> google.com </a>
  <p>e</p>
  <a href=“” target=“_blank”> target blank2 </a>
</div>

  • a[target] { } // a 의 target attribute 가 있는 모든 a 선택: target blank1, target blank2
  • a[href=“google”] { } // a 의 href attribute 가 google 이 포함되어 있는 모든 a 선택: google.net, google.com

  • *= : begin with
  • $= : end with
  • -= : has the value between two spaces
  • = : has the value separated by hyphens (-)

pseudo class 수도 클래스

<style>
  a:hover { text-decoration: none; }
  input:focus { background-color: blue; }
  input:enabled {}
  input:disabled {}
  input:checked {}

  p:first-child {} //각 div 의 첫번째 p element를 선택
  p:last-child {} //각 div 의 마지막 p element를 선택
  p:only-child {} //각 div 내에 p 하나만 있는 p element를 선택
  p:first-of-type {} //각 div 의 첫번째 p 타입을 선택
  p:last-of-type {} //각 div 의 마지막 p 타입을 선택
  p:only-of-type {} //각 div 내에 p 하나만 있는 p 타입을 선택

  tr:nth-child(2n) {} //테이블의 짝수 행 선택
  tr:nth-child(2n-1) {} //테이블의 홀수 행 선택
  tr:nth-last-child(2n-1) {} //테이블 뒤에서 부터 카운트
  tr:nth-of-type {} //특정한 타입만 선택

  div:empty { display: none; } //아무 것도 없는 div 는 보여주지 않기
  p:not(.green) {} //green 클래스가 아닌 모든 p 선택
  :not(div) {} //div가 아닌 모든 개체 선택

  p:first-letter {}
  p:first-line {}

  a:after { content: attr(href); }
  a:after { content: “I am a link”; }
  a:before {}

</style>