2015-05-11 2 views
5

Non riesco a far funzionare questo codice in nessuna versione di IE. Sto facendo qualcosa di sbagliato o IE fa solo schifo come al solito?CSS: dopo che lo pseudo elemento non funziona all'interno del pulsante in qualsiasi versione di IE

HTML:

<button>A button</button> 

CSS

button { 
    position: relative; 
} 

button:after { 
    content: "Can u see me?"; 
    position: absolute; 
    right: -100px; 
    top: 0; 
} 

Demo: http://jsfiddle.net/96ryusnp/

+0

Strano: IE9 e versioni successive dovrebbero supportarlo correttamente. IE8 ha supporto parziale. Vedi https://css-tricks.com/browser-support-pseudo-elements/ – technophobia

+0

Ho provato IE10 e IE9 qui sulla mia scatola virtuale. Nessuno di loro sta funzionando. Si prega di provare da soli se ne avete la possibilità. Piz. – Operator

risposta

10

È necessario aggiungere overflow: visible-button.

<button>A button</button> 

button { 
    position: relative; 
    overflow: hidden; 
} 

button:after { 
    content: "Can u see me?"; 
    position: absolute; 
    right: -100px; 
    top: 0; 
} 

http://jsfiddle.net/96ryusnp/1/

IE deve impostarlo hidden di default sui pulsanti.

0

button elementi sono elementi sostituiti.

E secondo la CSS 2.1 spec,

Questa specifica non definisce completamente l'interazione di: prima e: after con elementi sostituiti (come IMG in HTML). Questo sarà definito in modo più dettagliato in una specifica futura.

Ma l'current draft of Selectors Level 3 dice soltanto

L':: :: prima e dopo la pseudo-elementi possono essere usati per descrivere contenuto generato prima o dopo il contenuto di un elemento. Sono spiegato in CSS 2,1

Pertanto, utilizzando :before o :after su button elementi produrrà risultati inaffidabili.

+0

Per quanto ne so, questo non è corretto; un 'pulsante' è un elemento non sostituito. –

+0

@DaanMortier È possibile impostare le dimensioni di un pulsante anche se ha 'display: inline', che dovrebbe accadere solo per gli elementi sostituiti. Si potrebbe obiettare che ciò che accade è che il binding del pulsante lo obbliga ad essere visualizzato come un blocco in linea, ed è per questo che funziona, senza bisogno di essere un elemento sostituito. È difficile da dire, perché questo non è completamente definito e diversi browser fanno cose diverse. Diciamo che è un elemento ["kinda-replace"] (https://lists.w3.org/Archives/Public/www-style/2016Mar/0190.html). – Oriol