2013-07-03 11 views
9

Voglio dire, se ho bisogno, ad esempio, di selezionare il testo selezionato in un collegamento hovered in rosso, potrei usare il seguente codice in stile CSS?Combinare gli Pseudo-selettori nei CSS?

.abc:hover:selection{color:red} 

e

<a href="123" class="abc">4567890</a> 

Vorrei che link, quando seleziono parte di esso, diventano di colore rosso quando mi passa il mouse e 'questa sintassi corretta per questi pseudo-classi combinando?

+0

@David Thomas: dovrei sapere se è corretto o meno –

+0

In caso di dubbio, confermare. Se non convalida, allora è chiaramente sbagliato. – cimmanon

+0

@cimmanon: è molto semplice chiedere =) –

risposta

16

Se parli di pseudo-classi, allora sì, puoi combinarli in qualsiasi ordine.

Tranne in questo caso, ::selection non è una pseudo-classe, è uno pseudoelemento che non fa parte di CSS1 o CSS2 o di qualsiasi altra specifica corrente. Ed è qui che il termine "pseudo-selettore" è insufficiente, perché sono due cose completamente diverse.

La sintassi corretta è un singolo colon per :hover e doppi due punti per ::selection, ea differenza di pseudo-classi e pseudo-elementi deve sempre venire scorso:

.abc:hover::selection{color:red} 

E anche allora, a causa del modo ::selection opere (o non), non è garantito che abbia effettivamente un effetto nei browser.

+0

Ma potrebbe essere combinato ed è corretto modo. Questo è quello che stavo cercando –

0

sì, è il modo consigliato di farlo, vedere il W3C sulle classi pseudo: http://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes

EDIT: come BoltClock sottolineato, questo link se per CSS2, questo è il documento per CSS3: http://www.w3.org/TR/css3-selectors/#the-user-action-pseudo-classes-hover-act

+0

Grazie, è quello che non ho potuto trovare =) –

+0

Questo è chiaramente sbagliato data la domanda in questione. Anche il documento a cui ti colleghi è obsoleto. – BoltClock

+0

giusto, mai usato :: selezione, non sapevo che non è una pseudo classe. La mia risposta è ancora corretta per le pseudo-classi (reali), e questo particolare punto non è cambiato in CSS3. Modificherò la mia risposta con un documento aggiornato. – Trajan