Html 具有固定和绝对位置的IE8问题

Html 具有固定和绝对位置的IE8问题,html,css,internet-explorer-8,Html,Css,Internet Explorer 8,我有一个内容丰富的页面。当我打开它时,我有一个垂直滚动条。 我有一个小div,应该贴在右侧,居中(垂直)。 当用户滚动时,它应该处于相同的位置,不要一直移动到中间位置。 这项工作在chrome,ff中进行,但我对ie8有问题。 Chrome:div stick,因为它应该位于浏览器视口的垂直中心。 IE8:div保持在右侧,但它使用了整个内容的垂直中心,我需要只是一个视口。所以,如果ie8中的内容高度=4000px,它将以第2000个像素为中心,所以用户必须滚动才能看到它。 我做错了什么 pos

我有一个内容丰富的页面。当我打开它时,我有一个垂直滚动条。
我有一个小div,应该贴在右侧,居中(垂直)。
当用户滚动时,它应该处于相同的位置,不要一直移动到中间位置。
这项工作在chrome,ff中进行,但我对ie8有问题。
Chrome:div stick,因为它应该位于浏览器视口的垂直中心。
IE8:div保持在右侧,但它使用了整个内容的垂直中心,我需要只是一个视口。所以,如果ie8中的内容高度=4000px,它将以第2000个像素为中心,所以用户必须滚动才能看到它。
我做错了什么

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

您可以使用javascript实现这一点。下面是一个使用jQuery的示例,我将尝试:

var calculatedTop = $(window).innerHeight() / 2;
$('#YourDiv').css('top', calculatedTop);
Edit:我对其进行了一些扩展,以便在用户滚动时重新计算顶部位置。希望这有助于解决您的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();
    });
});

你能链接一个例子吗。。。这对我来说很好,试试这个:你的代码对我来说适用于IE8。我只是使用了height()而不是innerHeight()。或者vanilla JS:
var calculatedTop=window.innerHeight/2;var el=document.getElementById(“elem”);el.style.top=calculatedTop+“px”啊哈。。。在ie8中,滚动时它不在中心:(您可以附加到滚动事件,每次重新定位top属性。这应该设置为滚动距离+当前视口高度的一半。您可以提供示例吗?