2011-12-25 10 views
5

Desidero avere un colore di sfondo trasparente e utilizzo il filtro gradiente come ripiego di RGBA in IE. Il codice è simile a questo:Il filtro gradiente IE non risponde all'evento click

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bfffffff,endColorstr=#bfffffff); 

Voglio anche per attivare un evento quando l'utente fa clic sullo sfondo, ma sembra che l'evento click non viene attivato dopo ho impostato il filtro. Tutto è ok senza il filtro.

Quindi è un altro bug di IE? Come posso risolvere il problema?

+0

Spero che tu sappia che i filtri IE DX utilizzano #AARRGGBB anziché #RRGGBBAA? –

+0

Sì, sì. E l'effetto trasparente funziona bene. Il problema è che l'evento click non può essere attivato dopo aver applicato il filtro – bububut

+0

Bene, stavo solo facendo in modo di averlo fatto. (Mi ha sorpreso inconsapevolmente la prima volta che l'ho incontrato.) Suppongo che se avessi prestato la giusta attenzione alla forma della tua domanda avrei visto cosa stavi facendo. Ho pensato esattamente la stessa tecnica un paio di giorni fa ... un problema interessante che hai trovato con esso che potrebbe farmi risparmiare tempo più tardi se lo uso! –

risposta

6

Questo è probabilmente correlato al bug di IE che rende i collegamenti con sfondo trasparente non più cliccabili: mi sono imbattuto oggi. Avevo un link con uno sfondo trasparente e display impostato su block: l'area principale del link non era cliccabile, ma un border 10px era impostato su di esso. Sembra che IE abbia anche problemi con i filtri.

Questo tipo di errore viene discusso here e here. La soluzione del primo tipo è di dare un'immagine di sfondo falso all'elemento prima di impostare il filtro. Il secondo è quello di dare all'elemento un colore di sfondo e impostare l'opacità all'1%, che lo renderà praticamente invisibile in IE. Spero che tu possa aggirarlo usando uno di questi.

1

Questo non è l'affare. Internet Explorer crea i filtri su un livello separato posizionato sopra il tuo elemento e poiché il nuovo livello grafico non fa parte dell'elemento - su cui hai attivato l'evento click - non ci saranno bubbling di eventi.

Recentemente ho creato un elemento etichetta con un filtro gradiente piacevole per IE. Solo il testo può essere cliccato. Se analizzo i livelli dell'etichetta dal lato con e senza il livello del gradiente, allora capirai il problema.

without gradient filter: 

------------------ 
text layer 
------------------ 
background layer 
------------------ 


with gradient filter: 

------------------ 
text layer 
------------------ 
gradient layer 
------------------ 
background layer 
------------------ 

A proposito, questo è il motivo, perché non è possibile inserire un raggio di confine su un filtro sfumato troppo. Provalo. Crea un elemento e definiscilo con il raggio del bordo e assegnagli un filtro sfumato ed eseguilo in IE 9. Indipendentemente da come provi a forzare il gradiente a rimanere all'interno dei bordi arrotondati - con ad esempio l'overflow: nascosto -, non lo farà mai obbedire. È come un elemento separato che è posizionato in modo assoluto e proprio sopra l'elemento per coprirlo e proprio sotto il testo.

Problemi correlati