Формула выглядит хорошо, просто убедитесь, что вы получаете правильный размер для winH, winW и ваши модальные размеры.
Если модальный не виден, вы получите 0, или если он не находится в окне вашего документа, он будет иметь странную форму.
Также учтите, что height()
и width()
не учитывают заполнение, но outerWidth()
делает.
Совет:
Храните $ (id) внутри другой переменной, чтобы оптимизировать ваши запросы jQuery.
var modal = $(id);
modal.css('top', winH/2 - modal.height()/2);