2009-10-27 13 views
17

So che position:fixed; non era supportato da IE fino a IE 7 e funziona solo in IE 7 se si dispone di un STRICT DOCTYPE.Come ottenere "position: fixed" css per funzionare in IE 7+ con doctype TRANSITIONAL?

La mia domanda è: "Come faccio a farlo funzionare con IE 7 con TRANSITIONAL DOCTYPE?"

Si prega di non suggerire di cambiare un DOCTYPE, in quanto questo non risponde alla mia domanda, grazie.

+0

Meno tempo da trascorrere con la famiglia, grazie a IE. – user3383675

risposta

23

Non è necessario un DOCTYPE rigoroso per il supporto fixed. Hai solo bisogno di un DOCTYPE che attiva lo Standards Mode (o "quasi standard"). Che può essere un tipo di documento di transizione come ad esempio:

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

o XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

fino a quando il sistema di ID (l'URI alla fine) è incluso.

Se le pagine realmente sono basandosi su quirks mode (ugh!), Mi dispiace ma non è possibile utilizzare fixed e dovrà ricorrere a hack JavaScript (ma allora potrebbe essere necessario quelli per IE6 comunque).

+1

html5 attiva la modalità 'quasi standard'? '' –

+9

@Jonny: L'HTML5 '' attiva la modalità standard completa. – bobince

10

La posizione fissa non funziona nemmeno con i tipi di documento Transitional/Strict. Tuttavia sto usando IE9 in modalità di compatibilità e suppongo di eseguire il rendering usando le librerie di runtime di IE8. Per risolvere questo problema ho dovuto aggiungere il seguente CSS all'elemento.

.elementToBeFixed { 
    position: fixed; 
    top: 0; 
    left: 0; 
} 

Non funziona con Top o Sinistra sua scomparsa si deve a loro impostare in modo esplicito a zero (o il valore desiderato) per farlo funzionare in tutte le versioni di IE .... Inutile dire che IE fa schifo.

+0

ha funzionato come un incantesimo! Grazie! – marsalal1014

+0

Solo per FYI: anche in IE9, la modalità di compatibilità utilizza il motore di rendering IE7 in modalità * quirks *. Non rende nulla come IE8. –

+0

@Chris, mi sono reso conto che di recente, invia anche l'agente utente IE7 ... Grazie –

Problemi correlati