2010-09-07 14 views
162

se ho un tag di intestazione <h1 class="hc-reform">title</h1>CSS elemento successivo

h1.hc-reform{ 
    float:left; 
    font-size:30px; 
    color:#0e73bb; 
    font-weight:bold; 
    margin:10px 0px; 
} 

e dopo che ho un paragrafo <p>stuff here</p>

Come posso dire usando i CSS che ogni <p> tag che segue il h1.hc-reform da utilizzare: clear:both;

vorrei che essere:

h1.hc-reform > p{ 
    clear:both; 
} 

per qualche motivo che non funziona.

risposta

330

questo è chiamato il selettore adjacent sibling, ed è rappresentato da un segno più ...

h1.hc-reform + p { 
    clear:both; 
} 

Nota: questo non è supportato in IE6 o più anziani.

+4

che avrebbe selezionare solo il 'p' che viene subito dopo' h1.hc-reform'.Quindi, di nuovo, potrebbe essere l'unico su cui 'clear: both' deve essere applicato affinché funzioni, poiché cancella semplicemente il valore 'h1' float, quindi è ancora una risposta valida. – BoltClock

+3

+1 alla pistola più veloce! e per il collegamento al w3c –

+0

(re il tuo commento eliminato) sì, ma selezionerà solo * uno * 'p'. – BoltClock

11

no > è un selettore di figlio.

quello che si desidera è +

quindi cercate h1.hc-reform + p

supporto del browser non è grande

8

Il > è un child selector. Quindi se il tuo codice HTML è il seguente:

<h1 class="hc-reform"> 
    title 
    <p>stuff here</p> 
</h1> 

... allora questo è il tuo biglietto.

Ma se il codice HTML simile a questo:

<h1 class="hc-reform"> 
    title 
</h1> 
<p>stuff here</p> 

Poi si desidera che il adjacent selector:

h1.hc-reform + p{ 
    clear:both; 
} 
+4

Spero davvero che non abbia annidato p all'interno di h1. Inoltre, adiacente seleziona solo la prima p. –

49

È possibile utilizzare il sibling selector~:

h1.hc-reform ~ p{ 
    clear:both; 
} 

Questo seleziona tutti gli p elementi che arrivano a fter .hc-reform, non solo il primo.

+0

I bug di IE nel primo collegamento sono oscuri come case del caso, il che probabilmente è il motivo per cui Quirksmode li trascura. –

1

Non esattamente. Il h1.hc-reform > p significa "qualsiasi p esattamente un livello al di sotto di h1.hc-reform".

Quello che vuoi è h1.hc-reform + p. Ovviamente, ciò potrebbe causare alcuni problemi nelle versioni precedenti di Internet Explorer; se vuoi rendere la pagina compatibile con gli IE più vecchi, rimarrai bloccato con l'aggiunta di una classe manualmente ai paragrafi o utilizzando JavaScript (in jQuery, ad esempio, potresti fare qualcosa come $('h1.hc-reform').next('p').addClass('first-paragraph')).

Maggiori informazioni: http://www.w3.org/TR/CSS2/selector.html o http://css-tricks.com/child-and-sibling-selectors/

Problemi correlati