:第一个孩子没有按预期工作
我试图select一个名为detail_container
类的div
内的第一个h1
。 如果h1
是这个div
的第一个元素,它会起作用,但是如果它在这个ul
,它将不起作用。
<style type="text/css"> .detail_container h1:first-child { color:blue; } </style> </head> <body> <div class="detail_container"> <ul> <li></li> <li></li> </ul> <h1>First H1</h1> <h1>Second H1</h1> </div> </body> </html>
我的印象是,我所拥有的CSS将会select第一个h1
而不pipe这个div
在哪里。 我怎样才能使它工作?
h1:first-child
select器意味着
select其父项的第一个子项
当且仅当它是一个h1
元素。
这里的容器的:first-child
是ul
,因此不能满足h1:first-child
。
有CSS3的:first-of-type
你的情况的:first-of-type
:
.detail_container h1:first-of-type { color: blue; }
但是对于浏览器兼容性的问题,你最好给第一个h1
一个类,然后针对这个类:
.detail_container h1.first { color: blue; }
:first-child
当且仅当它是其父元素的第一个子元素时,第一个子元素select第一个元素h1
。 在你的例子中, ul
是div
的第一个孩子。
伪类的名字有些误导,但是在这个规范中,这个解释很清楚。
jQuery的:first
select器给你你在找什么。 你可以这样做:
$('.detail_container h1:first').css("color", "blue");
对于这种特殊情况,您可以使用:
.detail_container > ul + h1{ color: blue; }
但是如果你在很多情况下需要同一个select器,那么你应该有一个类,就像BoltClock所说的那样。
你也可以使用
.detail_container h1:nth-of-type(1)
通过任何其他号码更改数字1,您可以select任何其他H1项目。
你可以把你的h1
标签h1
另一个div
,然后第一个就是第一个first-child
。 该div
甚至不需要样式。 这只是隔离这些孩子的一种方式。
<div class="h1-holder"> <h1>Title 1</h1> <h1>Title 2</h1> </div>