簡體   English   中英

使用純css隱藏除元素的第一個子元素以外的所有子元素

[英]Hide all except first child of an element using pure css

我試圖在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> 

如何使用純css實現這一目標。

點擊這里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;
}

如果你想支持IE8 ,那么你唯一的選擇是通用兄弟選擇器

 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> 

您的代碼中的問題是您要隱藏第一個 .classa ,但第一個.classa不是.content的第一個子項, h3是第一個子項。

因此,作為:not()偽類的替代,您可以使用nth-of-type(n+2) 它將選擇具有相同類型的所有元素,第一個除外。

 div.classa:nth-of-type(n+2) { 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> 

你可以這樣做:

<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;
}

您可以嘗試:not pseudo class - https://developer.mozilla.org/en-US/docs/Web/CSS/:not

看到這個答案

有新的CSS3 :first-of-type你的案例的:first-of-type演示

.content h3, .content div{
    display:none;
}
.content .classa:first-of-type{  
    display : block;
}

如果我能正確理解這個問題,那么這里的目標是隱藏每個孩子( h3div.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> 

.content > *{ display: none;}
.content > *:first-child{ display: block !important; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM