我的印象是 :first-child 将选择一个元素,如果该元素是父元素的第一个子元素......例如 h1:first-child 应该选择 h1 如果它是其父元素的第一个子元素。但是我有这种情况,它似乎没有工作,甚至没有被浏览器考虑(它只是没有出现在 chrome 的代码检查器中)。
我的代码如下:
HTML:
<html>
<body>
<div>
<h1>Sample Header</h1>
</div>
</body>
</html>
CSS:
h1 {
margin:20px 0;
}
h1:first-child {
margin-top:0;
}
然而,它的顶部仍然有 20px 的边距。h1 是那个 div 的第一个孩子……那为什么不起作用呢?
编辑: 它与body标签等没有任何关系,我知道如果不理会body标签默认有一个边距。
这是问题站点的链接,因为我尝试了我在单独的 html 文件中发布的内容并且它确实有效......但在示例中我将链接它不起作用:
http://www.thecreativedesignfactory.com/test/index.html
我也不想使用 :first-of-type 因为它不受 IE 7-8 的支持。 :first-child 是一个更好的解决方案。
您可能在检查器中看不到任何 css 说明 :first-child ... 因为它根本无法识别它的存在。我确实在 template.css 文件中有这一行:
h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child, {
margin-top:0;
}