У меня есть script, выполняющий на $(document).ready(), который должен вертикально выравнивать элемент блока в моем макете. В 90% случаев он работает без проблем. Однако для этого дополнительного 10% происходит одна из двух вещей:
-
Существует очевидное отставание времени, затрачиваемого на центрирование, и элементы блока переходят в положение. Это может быть просто связано с производительностью - поскольку размер страницы часто большой, и есть справедливое количество javascript, который выполняется сразу.
-
Центрирование будет полностью испорчено, и элемент блока будет либо сдвинут слишком далеко, либо недостаточно далеко. Похоже, что он пытался подсчитать высоту, но получал неправильные измерения.
Есть ли причина, почему выполнение script в DOM-ready не будет иметь все правильные значения CSS, введенные в DOM еще? (все CSS находится в <head>
через <link>
).
Кроме того, здесь script, который вызывает проблему (да, это было принято прямо из здесь):
(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);
Спасибо.