2010-10-22 5 views
11

Situazione: Ottenuto un div con le immagini dei pulsanti. Div ha bisogno di sfumare in hover. Funziona su tutti i browser, tranne Internet Explorer. Quando conferisco al div un colore di sfondo, funziona all'improvviso.IE8: l'hover Div funziona solo quando è impostato il colore di sfondo, molto strano, perché?

Controllare: http://ListAndPlay.com, in alto a sinistra sono i controlli.

L'hover non funziona in IE, prova ad aggiungere un colore di sfondo ai # tasti e funziona all'improvviso.

Domanda: Qual è il motivo? Come risolvere questo problema correttamente?

+2

Bugfix molto brutto: aggiungi un'immagine trasparente come sfondo ... – MeProtozoan

risposta

26

Recentemente mi sono imbattuto in questo problema. L'ho anche risolto aggiungendo un'immagine di sfondo trasparente di 1 x 1 pixel all'elemento hover. Mi sentivo come fare una doccia dopo.

+0

Anche io dovevo fare la doccia. Avevo una soluzione con un 'background: transparent', ma forse mi stavo prendendo in giro - qualcuno potrebbe voler giocare con questo. – Cody

1

Anche con l'ultima versione di IE9 ho lo stesso problema. Come suggerito da MeProtozoo, l'aggiunta di un'immagine di sfondo trasparente all'ancora (s) fa sì che il comportamento funzioni come desiderato, ma dannazione è sporco.

2

Ciò è dovuto al layout. Usando la posizione: relativo darà lo stesso risultato senza l'uso di un'immagine di sfondo indesiderata.

+0

La posizione relativa sembra non funzionare [per me]. – Cody

9

Ho avuto questo problema proprio oggi facendo apparire un div overlay transparent quando ci si libra sopra. IE9 non si attivava al passaggio del mouse finché il mouse non superava il contenuto del testo dell'overlay. Ha funzionato bene su Chrome e FF4. Non ho provato la soluzione alternativa all'immagine trasparente, ma sembrava funzionare bene: rgba(0,0,0,0). Weird ...

+2

Bella scoperta, e molto meglio che usare un'immagine trasparente. E sì, strano :) – Shtong

+2

questo non funzionerà in IE6, 7, 8 in quanto non supportano rgba l'approccio migliore è usare un png 2x2 trasparente – Blowsie

2

Ho riscontrato lo stesso problema. Per me, il problema sembrava essere relativo all'utilizzo di elementi html5 (ad esempio <footer> e header) in ie8, e dimenticando di usare html5shiv per aggiungere il supporto per quegli elementi per i browser più vecchi.

In questo caso, l'aggiunta di html5shiv ha risolto il problema. Nessuna delle altre soluzioni proposte ha avuto alcun effetto.

5

La mia soluzione è impostare un colore di sfondo sull'elemento che è necessario passare con il mouse, quindi utilizzare la proprietà CSS opacity per nasconderlo. Viene fornita una riserva per IE sotto forma di filtro.

.element { 
    background-color: #fff; 
    opacity: 0; 
    filter: alpha(opacity=1); 
} 

Questa soluzione non richiede un PNG trasparente, e, a differenza della soluzione RGBA lavora in vecchie versioni di IE.

0

ho avuto problema simile con hover in div non funziona in IE8 e cambiare il mio tipo di documento per

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

riparato.

More details here

2

Ho lo stesso problema con IE8 utilizzando HTML5. La mia soluzione è stata ispirata da Herman. Ho impostato un'immagine di sfondo e quindi sto creando sfondo da parte non esistente. Fondamentalmente, sto chiedendo al browser di mostrare qualcosa che va oltre le dimensioni dell'immagine.

background: url(myimage.png) 300px 0px no-repeat; 

Per evitare traffico inutile può essere sprite del sito web o qualsiasi altra immagine valido che è già in uso sulla pagina.