2009-06-02 8 views
4

Je remplace un terme dictionnaire position absolue avec un autre comme ceci:jQuery - IE8 - fadeIn()/fadeOut() pixel décalage

jQuery ('# replaceme') fadeOut (150, de la fonction() {. jQuery ('# withme'). FadeIn (150); });

C'est un code assez simple qui ressemble et fonctionne très bien dans tous les navigateurs sauf IE8. Dans IE8, alors que fadeOut() fait son truc, le bloc de texte entier décale de 2 à 3 pixels, puis redescend de 2 à 3 pixels sur fadeIn().

Des idées sur ce qui pourrait être à l'origine de cela? Quelqu'un sait-il un moyen d'empêcher cela?

BTW: J'obtiens les mêmes résultats avec jQuery 1.3.1 qu'avec 1.3.2. Tout mon XHTML strict et CSS valident.

Répondre

1

Est-ce que le passage d'un élément en ligne à un élément en bloc ou en bloc est en cours? En utilisant les outils de développement ie8, essayez de changer la propriété d'affichage de l'élément en display:inline-block et voyez si le problème survient alors.

modifier: réponse aux commentaires

ce qui risque passe est l'élément est retiré du flux de documents prévu (en annexe au corps, ou un nouveau parent est d'insérer ce qui est ajouté à cela, etc ..) et les règles CSS qui s'appliqueraient normalement ne sont pas dans ce cas. Utilisez firebug pour identifier toutes les règles CSS qui s'appliquent à cet élément, puis essayez d'ajouter cet élément, #replaceme, à la liste des sélecteurs pour garantir que l'élément est stylisé comme vous le souhaitez. par exemple.

dt > dd.def { } 

devient

dt > dd.def, #replaceme { } 
+0

Chaque définition du dictionnaire

est un élément de niveau bloc avec un titre, l'image et l'étiquette de paragraphe à l'intérieur. Ils sont tous absolument positionnés au même endroit et réglés sur: display: none; par défaut. Lorsque l'utilisateur clique sur un
, les définitions s'infiltrent ... la définition actuelle disparaît et un nouveau apparaît. –

+0

Jonathon, merci beaucoup pour votre aide. Comme il s'est avéré, il n'y avait rien de mal avec le CSS pour la liste de définition. Le div de l'en-tête du site était de 100px et il y avait un élément dont la marge inférieure dépassait cette hauteur. Apparemment, cette marge rejetait IE8 tout en effectuant les fondus jQuery. –