我有点搞不懂这两个选择器。

后代选择器:

div p

选择所有的p在一个div,无论它是否是直接下降?所以如果p在另一个div中,它仍然会被选中?

然后子选择器:

div > p

有什么不同?孩子是指直系子女吗?如。

<div><p>

vs

<div><div><p>

两者是否都被选中?


当前回答

在理论: 一个祖先的直系后代(例如乔和他的父亲)

Descendant =>任何来自某个特定祖先的元素(例如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/

其他回答

是的,你说得对。Div p将匹配下面的示例,但Div > p不匹配。

<div><table><tr><td><p> <!...

第一个是后代选择器,第二个是子选择器。

div p 

选择所有'p'元素,其中至少有一个父元素、祖父元素等是'div'元素

div > p

这意味着直系子女 选择父元素为'div'的所有'p'元素

在你的问题中,Div > p匹配有Div父元素的ps - < Div ><p>

Div p匹配具有Div祖先(父母,祖父母,曾祖父母等)的ps -在您的问题中< Div ><p>和< Div >< Div ><p>

在理论: 一个祖先的直系后代(例如乔和他的父亲)

Descendant =>任何来自某个特定祖先的元素(例如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/

想想“孩子”和“后代”在英语中的意思:

我的女儿既是我的孩子,也是我的后代 我的孙女不是我的孩子,但她是我的后代。