我一直在努力寻找一种只显示我的 div 的第一个孩子并隐藏所有其他孩子的方法。这可以纯粹在css中完成还是我必须涉及一些Javascript?
那么,我怎样才能让它只显示第一个 p-tag?
<div id="test1">
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
</div>
我一直在努力寻找一种只显示我的 div 的第一个孩子并隐藏所有其他孩子的方法。这可以纯粹在css中完成还是我必须涉及一些Javascript?
那么,我怎样才能让它只显示第一个 p-tag?
<div id="test1">
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
<p>Lorem ipsum</p>
</div>
并且肯定应该:not
这样first-child
做:
#test1 p:not(:first-child) {
display: none;
}
请注意,这在版本 9 之前的 IE 中不起作用。
尝试这个
CSS
#test1 p{
display:none;
}
#test1 p:first-child{
display:block;
}
通过使用:first-child
包裹在:not()
:
#test1 p:not(:first-child) {
display:none;
}
请注意,first-child
IE8 或更早版本不支持。如果你想要完整的跨浏览器支持,你将不得不使用 Javascript。
Javascript 解决方案是:
var div = document.getElementById("test1");
var pList = div.getElementsByTagName("p");
for(var i=0; i<pList.length; i++) {
if(pList[i] != div.children[0]) {
pList[i].style.display = "none";
}
}
#test1 p {
display: none;
}
#test1 p:first-child {
display: block;
}
试试这个,应该适用于IE7+
CSS
#test1>p ~ p{
display: none;
}
如果您需要较旧的支持,那么这应该是跨浏览器的。
Javascript
var test1 = document.getElementById("test1").getElementsByTagName("p"),
i = 1,
p = test1[i];
while (p) {
p.style.display = "none";
p = test1[i += 1];
}
在您的示例中,您仅使用了p
元素,但是是否包含其他一些元素?通常,要仅显示第一个元素,您可以使用以下命令:
#test1 :not(:first-child) {
display: none;
}
请注意,这在 IE<9 中不起作用。
一个小提琴演示。
$('#test1 p:not(:first-child)').hide();
看看这个 URL,使用 psudo 元素选择特定元素来应用 CSS http://www.w3schools.com/CSS/css_pseudo_elements.asp
尝试
#test1 p:not(:first-child)
{
visibility:hidden;
}