2015-11-06 6 views
5

Quindi ho questa query per ottenere il last-child quando ci sono 7 o più elementiCSS primo bambino quando 7 o più figli

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

Questo funziona per qualsiasi numero di elementi a patto che ci sia un minimo di 7 . Quello che voglio fare è il contrario, prendi il first-child.

ho provato la seguente

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

Ma questo non funziona. Stranamente posso ottenere il secondo elemento figlio utilizzando il seguente

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

So che questo è piuttosto complessa CSS, e potrebbe anche non essere possibile, ma mi chiedo se si può fare. Preferirei non usare JS se possibile. Immagino che trattarlo come una sfida;)

+1

* Stranamente posso ottenere il secondo elemento figlio usin g il seguente * Puoi crearne una demo? –

+0

@ManojKumar a questa domanda è stata data risposta con una risposta accettata. Apprezzo il tuo tempo per commentare però. –

risposta

8

È possibile selezionare il primo elemento quando ci sono 7 o più elementi utilizzando il selettore di seguito:

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

Spiegazione:

  • nth-last-child(n+7) - selezionerà tutto ma gli ultimi sette elementi figlio. Quando ci sono meno di sette figli, questo non corrisponde a nessuno.
  • :first-child:nth-last-child(n+7) - Sarà selezionare solo l'elemento che è anche il primo figlio tra gli elementi che corrispondono dall'altra (che è, selezionare solo primo figlio quando ci sono sette o più figli)

.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 (per qualche motivo non sta lavorando con n+7 nello snippet)

+0

Potrei baciarti, non lo farò, ma potrei. Considera questa domanda risposta. Grazie. Mi fa risparmiare un sacco di seccature.Stavo ovviamente pensando in modo più complicato di quanto avrei dovuto. –

+0

@AlexMcCabe: prego amico :) Adoro domande come queste. – Harry

-1

per il primo elemento che potresti usare il primo di tipo nel tuo css. Esempio:

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

bene, si prega di leggere la domanda prima di dare qualsiasi risposta..OP non ha chiesto come dare colore al primo figlio. e non ti preoccupare non ho dato il voto negativo .. –

+0

Ho dato un esempio, il significato di questa piattaforma non è dare alla gente le risposte ma lasciarle provare e imparare .. Stavo solo cercando di dare un modo possibile su come potrebbe essere risolto. –

+0

Purtroppo amico questo mi dà solo il primo figlio in tutti i casi. –

Problemi correlati