CSS 자식 대 후손 선택기


298

이 두 선택기 사이에 약간 혼란 스럽습니다.

합니까 하위의 선택은 :

div p

모든 선택 p내를 div그 즉시 descedent의 여부? 따라서 p다른 안에있는 경우 div여전히 선택됩니까?

그런 다음 자식 선택기 :

div > p

차이점이 뭐야? 아이는 직계 아이를 의미합니까 ? 예 :

<div><p>

vs

<div><div><p>

둘 다 선택됩니까?


나는 여기 에 자세히 설명하려고 노력했는데 , 그것이 누군가에게 도움이된다면 그냥 참조 할 수 있습니다 ...
Mr. Alien

답변:


468

영어에서 "자식"과 "자손"이라는 단어의 의미를 생각해보십시오.

  • 내 딸은 내 아이이고 내 자손
  • 내 손녀는 내 아이가 아니지만 그녀는 내 후손입니다.

49
한 가지 중요한 메모는 하위 선택기가 하위 선택기보다 빠르다는 것입니다.이 선택기는 1000의 DOM 요소가있는 페이지에 눈에 띄는 영향을 줄 수 있습니다.
Jake Wilson

좋은 대답이지만, 질문에 그의 예제에 대한 직접적인 대답을 추가하기 만하면됩니다.
JoeCool 2009


23

Bascailly, " AB "동안 "선택 모든 B의, 안쪽, A> B "선택 의 B 단지 어린이 무엇 A는 , 그것은 선택하지 않습니다 b를 의 자식 인 것을 B 의 자식 인 것을 .

이 예는 차이점을 보여줍니다.

div span{background:red}
div>span{background:green}

<div><span>abc</span><span>def<span>ghi</span></span></div>

abcdef의 배경색은 녹색이지만 ghi 는 빨간색 배경색입니다.

중요 : 규칙 순서를 다음과 같이 변경 한 경우 :

div>span{background:green}
div span{background:red}

자손 선택기가 자녀를 선택하기 때문에 모든 글자의 배경이 빨간색입니다.


추가 한 "중요"섹션에서이 답변이 완료됩니다. 감사!
Aakash Verma

10

이론적으로 : Child => 조상의 직계 후손 (예 : Joe와 그의 아버지)

후손 => 특정 조상으로부터 내려온 요소 (예 : 조와 그의 증조부)

실제로 : 이 HTML을 사용해보십시오.

<div class="one">
  <span>Span 1.
    <span>Span 2.</span>
  </span>
</div>

<div class="two">
  <span>Span 1.
    <span>Span 2.</span>
  </span>
</div>

이 CSS와 함께 :

span { color: red; } 
div.one span { color: blue; } 
div.two > span { color: green; }

http://jsfiddle.net/X343c/1/


그것이 실제로 작동하는 것처럼 보일 때문에 흥미있는 브라우저에 당신은 그것을 테스트
요엘 halb을

3
참고로, 대답 CSS는 JSFiddle에서 CSS (일치하지 않는 redblue교환).
Pang

7

Internet Explorer 6에서는 하위 선택기가 지원되지 않습니다 (스타일 시트가 아닌 jQuery / Prototype / YUI 등 선택기에서 선택기를 사용하는 경우 여전히 작동 함)


나는 그것을 CSS에서 사용하고 있다고 생각합니다. 브라우저가 IE6의 경우 만 JQuery와에 내가 감지 (JQuery와에 내가이 작업을 수행하거나 내가 사용해야하나요? <! - [경우 IE 6]>)와 클래스 추가
iceangel89

2
jquery는 브라우저 스니핑보다는 스니핑 기능을 제공하므로 브라우저가 ie6인지 감지 할 수 없다고 생각합니다. 그리고 당신은해서는 안됩니다. 가장 좋은 것은 설명 된 조건부 주석과 함께 ie6에 대한 추가 스타일 시트를 포함시키는 것입니다.
rlovtang

4
div p 

부모가 'div'요소 인 모든 'p'요소를 선택합니다.

div> p

즉치 하위를 의미합니다. 상위 요소가 'div'요소 인 모든 'p'요소를 선택합니다.


-1

dom 요소를 통한 순회를 통해 CSS 선택 및 특정 요소에 스타일 적용을 수행 할 수 있습니다. [예

.a .b .c .d{
    background: #bdbdbd;
}
div>div>div>div:last-child{
    background: red;
}
<div class='a'>The first paragraph.
 <div class='b'>The second paragraph.
  <div class='c'>The third paragraph.
   <div class='d'>The fourth paragraph.</div>
   <div class='e'>The fourth paragraph.</div>
  </div>
 </div>
</div>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.