2013-03-29 10 views
13
ul

li > ul > li seleziona tutti gli elementi li che sono più profondi del primo livello di un ul.CSS per selezionare il livello più alto di un

li seleziona tutti gli elementi li

li:not(li > ul > li) dovrebbe selezionare tutti li elementi che sono non più profondo del primo livello di un ul --that è, solo gli elementi di primo livello - ma non lo fa. Perché?

Grazie!

+3

': not' accetta solo [selettori semplici] (http: //www.w3. org/TR/CSS3-selettori/# semplici-selettori-DFN). –

+0

@Lotuse: ho aggiunto un collegamento alle specifiche ... –

+0

@Lotus: in base alle specifiche, ': nth-child' è una pseudo classe e quindi dovrebbe essere un semplice selettore. –

risposta

7

Il motivo li:not(li > ul > li) non funziona perché li > ul > li non è un semplice selettore (come Felix Kling ha annotato nei commenti alla tua domanda).

Il modo più semplice per ottenere il livello superiore è quello di dare una classe o ID al esterna più ul e poi fare:

.ulClassNameOrID > li {} 

Tuttavia, il seguente ottiene ciò che si desidera anche (see fiddle) come fa non selezionare qualsiasi ul che è un figlio diretto di una precedente li (quindi non è un elenco secondario di dell'elenco esterno):

:not(li) > ul > li {} 
+0

Vuole selezionare gli elementi di primo livello, non il livello più alto. – Michael

+0

Puoi mostrare che funziona in un jsfiddle? –

+2

@JonHarding: ho già fornito un violino. – ScottS

Problemi correlati