我试图在classa类元素的第一个孩子之后隐藏所有其他孩子。
div.classa {
display:none;
}
div.classa:first-child {
display:block !important;
}

<div class="content">
<h3>abc</h3>
<div class="classa">some content</div>
<h3>xyz</h3>
<div class="classa">more content</div>
<h3>header3</h3>
<div class="classa">another content</div>
</div>
&#13;
如何使用纯css实现此目的。
答案 0 :(得分:28)
点击此处https://jsfiddle.net/32vw04jg/1/
<div class="content">
<div>
<h3>abc</h3>
<div class="classa">some content</div>
</div>
<div>
<h3>xyz</h3>
<div class="classa">more content</div>
</div>
<div>
<h3>header3</h3>
<div class="classa">another content</div>
</div>
</div>
.content > div:not(:first-child) {
display: none;
}
答案 1 :(得分:11)
如果您想support IE8,那么您唯一的选择就是general sibling selector:
div.classa ~ .classa {
display: none;
}
<div class="content">
<h3>abc</h3>
<div class="classa">some content</div>
<h3>xyz</h3>
<div class="classa">more content</div>
<h3>header3</h3>
<div class="classa">another content</div>
</div>
答案 2 :(得分:8)
您的代码中的问题是您要先隐藏 .classa
,但第一个.classa
不是.content
中的第一个孩子},h3
是第一个孩子。
因此,作为:not()
伪类的替代方法,您可以使用nth-of-type(n+2)
。它将选择具有相同类型的所有元素,第一个除外。
div.classa:nth-of-type(n+2) {
display:none;
}
&#13;
<div class="content">
<h3>abc</h3>
<div class="classa">some content</div>
<h3>xyz</h3>
<div class="classa">more content</div>
<h3>header3</h3>
<div class="classa">another content</div>
</div>
&#13;
答案 3 :(得分:3)
你可以这样做:
<div class="content">
<h3>abc</h3>
<div class="classa">some content1</div>
<h3>xyz</h3>
<div class="classa">more content2</div>
<h3>header3</h3>
<div class="classa">another content3</div>
</div>
的CSS:
.content > .classa:not(:nth-of-type(2)) {
display:none;
}
答案 4 :(得分:1)
您可以尝试:not
伪类 - https://developer.mozilla.org/en-US/docs/Web/CSS/:not
请参阅this answer
答案 5 :(得分:1)
您的案例中有新的CSS3&#39; :first-of-type
:
Demo
.content h3, .content div{
display:none;
}
.content .classa:first-of-type{
display : block;
}
答案 6 :(得分:0)
如果我能正确理解问题,那么这里的目标是隐藏每个孩子(h3
和div.classa
),但第一个h3
和下一个div.classa
除外
最简单的方法是将:first-of-type
和~
(同级兄弟)选择器组合在一起。
div.classa:first-of-type ~ * { display:none; }
<div class="content">
<h3>abc</h3>
<div class="classa">some content</div>
<h3>xyz</h3>
<div class="classa">more content</div>
<h3>header3</h3>
<div class="classa">another content</div>
</div>
答案 7 :(得分:-1)
.content > *{ display: none;}
.content > *:first-child{ display: block !important; }