2009-10-27 7 views
17

Je sais que position:fixed; n'était pas supporté par IE jusqu'à IE 7, et il ne fonctionne que dans IE 7 si vous avez un STRICT DOCTYPE.Comment obtenir "position: fixed" css pour travailler dans IE 7+ avec TRANSITIONAL doctype?

Ma question est: "Comment puis-je le faire fonctionner avec IE 7 avec TRANSITIONAL DOCTYPE?"

S'il vous plaît ne pas suggérer de changer un DOCTYPE, car cela ne répond pas à ma question, merci.

+0

Moins de temps à passer en famille - grâce à IE. – user3383675

Répondre

23

Vous n'avez pas besoin d'un support strict DOCTYPE pour fixed. Vous avez seulement besoin d'un DOCTYPE qui déclenche Standards Mode (ou 'presque les standards'). Cela peut être une transition doctype tels que:

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

ou XHTML:

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

tant que l'ID du système (l'URI à la fin) est inclus.

Si vos pages vraiment sont compter sur le mode Quirks (ugh!), Je suis désolé, mais vous ne pouvez pas utiliser fixed et devront recourir à des hacks JavaScript (mais vous pourriez avoir besoin pour les IE6 de toute façon).

+1

Est-ce que html5 déclenche le mode 'presque standard'? '' –

+9

@Jonny: Le HTML5 '' déclenche le mode Standards complet. – bobince

10

La position fixe ne fonctionne pas pour moi même avec les types Transitional/Strict Doc. Cependant j'utilise IE9 en mode de compatibilité et cela est supposé rendre en utilisant les bibliothèques d'exécution IE8. Pour résoudre ce problème, j'ai dû ajouter le CSS suivant à l'élément.

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

Il ne fonctionne pas avec haut ou à gauche d'être vous manque devez les définir explicitement à zéro (ou la valeur désirée) pour que cela fonctionne dans toutes les versions de IE .... Inutile de dire que IE suce.

+0

a travaillé comme charme! Merci! – marsalal1014

+0

Juste pour info: Même dans IE9, le mode de compatibilité utilise le moteur de rendu IE7 en mode * quirks *. Cela ne rend rien comme IE8. –

+0

@Chris, j'ai réalisé que récemment, il envoie même l'agent utilisateur IE7 ... Merci –