2013-01-03 16 views
80

Sto creando una firma e-mail HTML con CSS in linea (ad esempio CSS negli attributi style) e sono curioso di sapere se è possibile utilizzare gli pseudo-elementi :before e .Uso del CSS: prima e: dopo pseudo-elementi con CSS in linea?

In tal caso, come implementare qualcosa di simile con CSS in linea?

td { text-align: justify; } 
td:after { content: ""; display: inline-block; width: 100%; } 
+1

Hai bisogno linea ? – Scrimothy

+6

Non è possibile utilizzare gli stili in linea per scegliere come target pseudo-classi o pseudo-elementi. –

+2

duplicato probabilmente di [Pseudo-classi CSS con stili in linea] (http://stackoverflow.com/questions/5293280/css-pseudo-classes-with-inline-styles) – Champ

risposta

6

No non puoi target L'pseudo-classes o pseudo-elements in linea-css come disse David Thomas. Per maggiori dettagli vedi this risposta di BoltClock circa pseudo-classi

No. attributo Lo stile definisce solo proprietà dello stile per un elemento HTML determinato . Pseudo-classi sono un membro della famiglia dei selettori, che non si verificano in attributo .....

Possiamo anche scrivere usare stesso per le pseudo-elementi

No. L'attributo style definisce solo le proprietà di stile per un dato elemento HTML . Pseudo-classi e pseudo-elementi sono membri della famiglia di selettori, che non si verificano nell'attributo, quindi non li si può definire in linea.

+0

Vedere la mia risposta e il mio commento sulla domanda. – BoltClock

+0

sì, non sono gli stessi. ma la ragione dietro che non possono essere utilizzati in linea è la stessa cosa giusta? – Champ

+0

Le risposte sono simili, ma le domande sono molto diverse. – BoltClock

79

Non è possibile specificare gli stili in linea per gli pseudo-elementi.

Questo perché pseudo-elementi, come le pseudo-classi (vedi la mia risposta a this other question), sono definiti in CSS usando selettori come astrazioni dell'albero del documento che non possono essere espresse in HTML. Un attributo in linea style, d'altra parte, è specificato in HTML per un particolare elemento.

Poiché gli stili in linea possono essere eseguiti solo in HTML, si applicano solo all'elemento HTML su cui sono definiti e non a tutti gli pseudo-elementi che genera.

Per inciso, la differenza principale tra pseudo-elementi e pseudo-classi in questo aspetto è che le proprietà ereditate per impostazione predefinita will be inherited da :before e :after dall'elemento di generazione, mentre stili pseudo-classe semplicemente non si applicano affatto. Nel tuo caso, ad esempio, se inserisci text-align: justify in un attributo di stile inline per un elemento td, verrà ereditato da td:after. L'avvertenza è che non è possibile dichiarare td:after con l'attributo di stile in linea; devi farlo nel foglio di stile.

23

come già detto: non è possibile chiamare una css pseudo-classe/-elemento in linea. quello che ho fatto ora è: dare al tuo elemento un identificatore univoco, es. un ID o una classe unica. e scrivere un raccordo <style> elemento

<style>#id29:before { content: "*";}</style> 
<article id="id29"> 
    <!-- something --> 
</article> 

fugly, ma quello che non sta css inline ..?

+2

non è in linea CSS. I CSS in linea richiedono che l'attributo style = "" sia passato ai singoli elementi HTML. Comunemente richiesto per l'invio di CSS formattato a Gmail, che rimuove qualsiasi cosa nei tag

'. Correzione –

+2

: utilizzare la pseudo-classe ': scope':'

: scope: before {content: "*";}
' –