2010-12-03 20 views
1

Ich habe eine Frage. Ich möchte ein Div in der vertikalen Mitte des Browser-Ansichtsfensters ausrichten. Ich verstehe, wie man das macht und habe selbst Code geschrieben. Aber es gibt eine Sache, die nicht funktioniert:Vertical Center ein Div auf einer Seite

// 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); 

Nun, das Problem ist, dass es nicht den richtigen scrollTop Wert bekommen ... es sagt immer, es ist 0, wie Sie zur Zeit an der Spitze der Seite sind .

Können Sie mir helfen ??

Antwort

0

$(window).scrollTop() kehrt, wie weit unten auf der Seite, die Sie geblättert haben. Versuchen Sie, diese in die Adressleiste eingeben, wie Sie in verschiedenen Positionen auf der Seite sind

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

Edit (jede Seite.): Es scheint, dass Sie bereits wissen. Das Problem ist, dass die Variable nicht aktualisiert wird. Wenn die Seite geladen wird, hat $(window).scrollTop() den Wert 0. Um den Wert zu aktualisieren, versuchen Sie, ein Ereignis zu binden, um diesen Wert zu aktualisieren.

+0

Offcourse! Das war das Problem ... es hat meinen scrollTop Wert beim Sichten gespeichert (was in diesem Moment 0 ist). Ich habe es jetzt an einen Klick auf den Button gebunden und es funktioniert! Danke, Mann! – Xeon

1

Wenn Sie wollen, diese js-Weg ist, können Sie so wie das tun:

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

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

Können Sie eine Demo [JS Fiddle] (http://jsfiddle.net/) oder [JS Bin] (http://jsbin.com/) für diesen Ansatz zusammenstellen und verlinken? –

+0

Hier ist es: http://jsfiddle.net/5bfYy/1/ –