2015-11-06 17 views
5

Vì vậy, tôi có truy vấn này để có được những last-child khi có 7 hoặc nhiều yếu tốCSS Đầu tiên trẻ em khi 7 trở lên trẻ em

li:nth-last-child(7) ~ li:last-child { 
    background: red; 
} 

này làm việc cho bất kỳ số lượng các yếu tố như miễn là có tối thiểu là 7 . Những gì tôi muốn làm là ngược lại, nhận được first-child.

Tôi đã thử các sau

li:nth-last-child(7) ~ li:first-child { 
    background: red; 
} 

Nhưng điều đó không làm việc. Kỳ lạ là tôi có thể lấy phần tử con thứ hai bằng cách sử dụng sau

li:nth-last-child(7) ~ li:nth-child(2) { 
    background: red; 
} 

Tôi biết đây là CSS khá phức tạp, và thậm chí không thể, nhưng tôi tự hỏi nếu nó có thể được thực hiện. Tôi không muốn sử dụng JS nếu có thể. Tôi đoán đây là một thách thức;)

+1

* Kỳ lạ thay tôi có thể lấy usin phần tử con thứ hai g sau đây * Bạn có thể tạo một bản demo của nó? –

+0

@ManojKumar câu hỏi này hiện đã được trả lời bằng câu trả lời được chấp nhận. Đánh giá cao thời gian của bạn để bình luận mặc dù. –

Trả lời

8

Bạn có thể chọn phần tử đầu tiên khi có 7 hoặc nhiều yếu tố bằng cách sử dụng trình chọn bên dưới:

div:first-child:nth-last-child(n+7) { 
    color: red; 
} 

Giải thích:

  • nth-last-child(n+7) - Sẽ chọn tất cả nhưng bảy yếu tố con cuối cùng. Khi có ít hơn bảy trẻ em, điều này sẽ không phù hợp.
  • :first-child:nth-last-child(n+7) - Sẽ chỉ chọn những yếu tố đó cũng chính là đứa con đầu lòng trong những yếu tố đó phù hợp với một phần khác (đó là, chỉ chọn đứa con đầu lòng khi có bảy hoặc nhiều trẻ em)

.container > div:first-child:nth-last-child(n+7) { 
 
    color: red; 
 
}
<h3>Has seven children</h3> 
 
<div class='container'> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
</div> 
 

 
<h3>Has six children</h3> 
 
<div class='container'> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
</div> 
 

 
<h3>Has nine children</h3> 
 
<div class='container'> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
    <div>Test</div> 
 
</div>

Fiddle Demo (Đối với một số lý do nó không hoạt động với n+7 trong đoạn)

+0

Tôi có thể hôn bạn, tôi sẽ không, nhưng tôi có thể. Hãy xem xét câu hỏi này được trả lời. Cảm ơn bạn. Tiết kiệm cho tôi một đống rắc rối.Tôi rõ ràng đang nghĩ cách phức tạp hơn tôi nên làm. –

+0

@AlexMcCabe: Bạn thân mến :) Tôi thích những câu hỏi như thế này. – Harry

-1

cho phần tử đầu tiên bạn có thể sử dụng loại đầu tiên trong css của mình. Ví dụ:

p:first-of-type { 
     background: #ff0000; 
    } 
+0

tốt, xin vui lòng đọc câu hỏi trước khi đưa ra bất kỳ câu trả lời..OP không hỏi làm thế nào để cung cấp cho màu sắc cho con đầu tiên. và đừng lo lắng tôi đã không bỏ phiếu bầu .. –

+0

Tôi đưa ra một ví dụ, ý nghĩa của nền tảng này không mang lại cho mọi người câu trả lời nhưng cho phép họ thử và tìm hiểu .. Tôi chỉ cố gắng đưa ra một cách có thể nó có thể được giải quyết. –

+0

Thật không may, bạn bè này chỉ cho tôi đứa con đầu tiên trong mọi trường hợp. –

Các vấn đề liên quan