2011-10-07 14 views
24

Voglio modellare l'ultimo/secondo .heading.Uso: ultimo figlio con selettore di classe

<ul> 
    <li class="heading">Hello world</li> 
    <li>Hello world</li> 
    <li>Hello world</li> 
    <li class="heading">Hello world</li> 
    <li>Hello world</li> 
</ul> 

ul li.heading:last-child { 
    background: black; 
} 

ul li.heading:nth-child(2) { 
    background: black; 
} 

funziona per me. Perché e come posso applicare gli stili a quello <li>? Sembra che i selettori di pseudo-classe non funzionino con i selettori di classe. Il che è strano visto che avrei giurato di averlo usato prima.

Aggiornamento: Oops, totalmente dimenticato the jsfiddle.

+0

Non credo che ci sia un modo per selezionare il figlio di una classe con questi selettori di pseudo-classe. È sempre la quarta intestazione in una lista o è sempre la seconda istanza della classe .heading che vuoi stile? Se sempre 4a la risposta qui sotto dovrebbe funzionare bene anche se potresti usare anche l'nth-of-type. – KryptoniteDove

+0

Ti rendi difficile la vita se non risolvi questo problema a livello di markup/semantic/html. L'uso di 'ul' nested ti permetterà di fare esattamente quello che vuoi con i selettori CSS2. –

risposta

24

La sua dichiarazione è stata: "Io voglio per lo stile all'ultimo secondo .heading /"

Ciò significherebbe che si dovrebbe scrivere il codice come questo:

<ul> 
    <li class="heading">Hello world</li> 
    <li class="heading">Hello world</li> 
    <li class="heading">Hello world</li> 
    <li class="heading">Hello world</li> 
    <li class="heading">Hello world</li> 
</ul> 

E il CSS:

ul li.heading:last-child { 
    background: black; 
} 
ul li.heading:nth-child(2) { 
    background: black; 
} 

Altrimenti, con il codice HTML corrente, si può scrivere:

ul li.heading:nth-child(4) { 
    background: black; 
} 
ul li.heading:nth-child(1) { 
    background: black; 
} 

Capisco il tuo pensiero, ma il lis con la classe "direzione" non è il secondo o l'ultimo figlio.

4

Questo perché li.heading non è l'ultimo figlio né è il secondo figlio. E 'il primo e il quarto figlio del ul

dare una prova:

ul li.heading:nth-child(4) { 
    background: black; 
} 
4
ul li.heading:nth-last-child(2) 

2 significa che si sa quanti di <li> sono secondo i vostri < li class = "heading" > nel nostro caso è al penultimo posto.

Problemi correlati