2010-12-03 4 views
1

У меня вопрос. Я хочу выровнять div в вертикальном центре с окна просмотра браузера. Я понимаю, как это сделать, и сам написал код. Но есть одна вещь, которая не работает:Вертикальный центр a div на странице

// fetch al info I need 
var windowHeight = $(window).height(); 
var pageTop = $(window).scrollTop(); 
var modalHeight = "98"; 

// Get the centre of the window 
var divTop = (windowHeight - modalHeight)/2; 
// Add the scrollTop so the div will align in the middle of my current browser viewport  
var divTop = divTop + pageTop; 
var divTop = divTop + "px"; 
$('#modal_placeholder').css('top',divTop); 

Теперь проблема в том, что он не получит правильное значение scrollTop ... он всегда говорит, что это 0, как вы в настоящее время в верхней части страницы ,

Можете ли вы мне помочь?

ответ

0

$(window).scrollTop() возвращается как далеко вниз страницы, вы прокручивается. Попробуйте ввести это в адресную строку, как вы находитесь в разных позициях на странице

javascript:alert($(window).scrollTop()); 

Edit (любой страницы.): Кажется, вы уже знаете об этом. Проблема в том, что переменная не обновляется. Когда страница загружается, $(window).scrollTop() имеет значение 0. Чтобы обновить значение, попробуйте привязать событие к обновлению этого значения.

+0

Offcourse! В этом была проблема ... она сохранила значение scrollTop на pageload (в данный момент это 0). Теперь я привязываю его к клику на кнопке, и он работает! Спасибо чувак! – Xeon 2010-12-03 17:25:42

1

Если вы хотите сделать это JS-путь, вы можете сделать такие, как, что:

var d = $(your_div), 
    div_height = d.height(); 

d.css({ 
    position: 'absolute', 
    top: '50%', 
    margin: '-' + (div_height/2) + 'px 0 0 0' 
}) 
+0

Не могли бы вы собрать и связать с ним [JS Fiddle] (http://jsfiddle.net/) или [JS Bin] (http://jsbin.com/) демо для этого подхода? – 2010-12-03 17:04:29