CSS子选择器问题

时间:2012-08-22 09:31:37

标签: html css css-selectors

在下面的例子中,有人能告诉我“Heading”和“Heading 2”是如何被涂成红色的吗? http://jsfiddle.net/zxfNU/1/

HTML

<div id="root">
    <p>
        <p>Test 1</p>

        <h3>Heading</h3>

        <h3>Heading 2</h3>

    </p>
</div>

<h3>Heading 3</h3>

CSS

div#root > h3
{
    color: red;
}

如果CSS只在div下面选择一个h3元素,那么它实际上是在p元素下吗?

4 个答案:

答案 0 :(得分:5)

p内的

p无效标记。所以结果html是:

<div id="root">
    <p></p>
    <p>Test 1</p>
    <h3>Heading</h3>       
    <h3>Heading 2</h3>
    <p></p>
</div>

正如您所见,浏览器修复了错误的标记以遵循规范。

答案 1 :(得分:5)

而不是<p>使用<div>,因为<p>中的<p>不是有效的标记。

答案 2 :(得分:0)

这是因为p标签内的p标签不是有效的Html 使用Inspect元素,你会发现你的html为

  <div id="root">
    <p>
        </p><p>Test 1</p>

        <h3>Heading</h3>

        <h3>Heading 2</h3>

    <p></p>
</div>

<h3>Heading 3</h3>

答案 3 :(得分:0)

查看呈现的HTML,例如在Firebug:

enter image description here

那是因为您无法将p置于另一个p

@Your编辑的小提琴:

现在呈现以下HTML:

enter image description here

而且,由于您还将CSS更改为div > h3,因此它仍然显示为红色。