Est de $(document).prêt() également CSS prêt?

J'ai un script s'exécutant sur $(document).prêt() qui est censé alignez verticalement élément de bloc dans ma mise en page. 90% du temps, il fonctionne sans problème. Cependant, pour que 10% de l'une des deux choses suivantes se produit:

  • Il y a un évident décalage dans le temps qu'il faut pour faire le centrage, et les éléments de bloc de saut en position. Ce pourrait être tout simplement lié à la performance - comme la taille de la page est souvent grande et il y a une bonne quantité de javascript qui est en cours d'exécution à la fois.

  • Le centrage sera complètement en désordre, et l'élément de bloc sera soit poussé trop loin ou pas assez loin. Il semble comme si elle a essayé de calculer la hauteur, mais a été d'obtenir une mauvaise mesure.

Est-il une raison pourquoi l'exécution d'un script sur les DOM-prêt n'auraient pas tous la bonne CSS valeurs injectées dans les DOM encore? (tous les CSS est dans le <head> via un <link>).

Aussi, voici le script qui est à l'origine du problème (oui, il a été pris directement à partir de ici):

 (function ($) {
    //VERTICALLY ALIGN FUNCTION
    $.fn.vAlign = function() {
      return this.each(function(i) {
        var ah = $(this).height();
        var ph = $(this).parent().height();
        var mh = (ph - ah) / 2;
        $(this).css('margin-top', mh);
      });
    };
  })(jQuery);

Grâce.

  • Existe-il des images impliqués? Même après que les styles sont calculées, le chargement des images peut causer de la nouvelle disposition.
InformationsquelleAutor Bryan M. | 2009-08-24