2013-04-26 5 views
5

è possibile applicare una regola alla prima <th> del primo <tr> se ci sono 2 o più <tr> in <thead>?css: applicare l'articolo sulla prima <tr><th> se ci sono 2 <tr>

ho fatto:

table tr:first-child th:first-child 

ma se solo 1 <tr> c'è ti si applicano in ogni caso.

+0

Se si dispone di un certo stile di default, è possibile applicarlo a 'tr: solo-bambino th: first-child' a "override" in caso di figlio unico. – Passerby

risposta

7

È possibile utilizzare una combinazione dei :not() e :only-child selettori in questo modo:

tr:first-child:not(:only-child) th:first-child { 
    color:red; 
} 

codice è relativamente auto esplicativo, interesserà solo il primo figlio, se non è figlio unico.

DEMO

E 'relativamente male support però, potrebbe essere necessario un javascript polyfill a fare per essa, se è necessario supportare IE8 o al di sotto.

+0

buono :) @Andy – Ashwin

+0

vedo che questo fa quello che mi serve. quindi funziona solo per il nuovo browser e per IE> = 8? – Atomico

+1

@Atomico No, [per IE> 8 (cioè IE> = 9)] (https://developer.mozilla.org/en-US/docs/CSS/:not#Browser_compatibility). – Passerby

0

Non penso che sia possibile senza utilizzare il css class. Se stai creando tr in modo dinamico. Suggerirei di fare come di seguito:

if(condition for rows > 2) { 
    <tr><th class="applyCSS"></th><th></th></tr> 
    <tr><th></th><th></th></tr> 
    ...... 
} 
else {  //only one tr 
    <tr><th></th><th></th></tr> 
} 

CSS:

applyCSS { .... }