2014-01-21 111 views
1

我有一個頁面有很多內容。當我打開它時,我有一個垂直滾動條。
我有一個小的div應該堅持右側並居中(垂直)。
當用戶滾動它應該在相同的位置永遠不會移動只是在中心在那裏。
而這項工作在鉻,ff但我有問題ie8。
Chrome:div stick,因爲它應該是瀏覽器視口中的垂直中心。
IE:div粘到右邊,但它使用垂直中心的整個內容只是一個視口。因此,如果ie8中的內容是height = 4000px,則它將以第2000像素爲中心,因此用戶必須滾動才能看到它。
我在這裏做錯了什麼?IE8問題與固定和絕對位置

position:fixed; 
_position:absolute; 
top: 50%; 
right: 0; 
+0

你能鏈接一個例子嗎? ... – DaniP

+0

http://jsfiddle.net/J77Q7/ – 1110

+0

這對我很好[FIDDLE](http://jsfiddle.net/J77Q7/2/embedded/result/) – DaniP

回答

1

你可以用javascript來做到這一點。下面是一個例子,使用jQuery,我會嘗試:

var calculatedTop = $(window).innerHeight()/2; 
$('#YourDiv').css('top', calculatedTop); 

編輯:我已經擴大了這一點,以重新計算頂部位置,當用戶滾動。希望這有助於您的IE8問題。

$(document).ready(function(){ 
    var reposition = function() { 
     var calculatedTop = $(window).innerHeight()/2; 
     calculatedTop += $(document).scrollTop(); 
     $('#YourDiv').css('top', calculatedTop); 
    } 

    // call reposition immediately on initial load 
    reposition(); 

    // attach to scroll event 
    $(window).on('scroll', function(){ 
     reposition(); 
    }); 
}); 
+0

這是行得通的。我只是使用height()而不是innerHeight()。 – 1110

+1

或者vanilla JS:'var calculatedTop = window.innerHeight/2; var el = document.getElementById(「elem」); el.style.top = calculatedTop +「px」;' –

+0

Aghh ...在IE8中它不在中心當滾動:( – 1110