1

基本上我正在做的是监听器,它检查水平滚动是否发生了变化。如果滚动发生了变化,那么它将重新定位 div,因此它始终位于视口的左上角。getScroll()价值观很容易。

但是我怎样才能从左到右改变呢?问题是正确的:0 不起作用,因为它使 div 几乎位于屏幕中间并且通过滚动或缩放,它会留在那里(Windows Phone 7 不支持position: fixed!)也许有人遇到过类似的问题和找到解决方法或计算方法吗?

另外为什么body总是1024px(与视口大小相同)?有没有办法获得网站的总大小?

到目前为止,我使用的唯一变量是 window.getScroll().xdocument.body.scrollWidthwindow.innerWidth

body {
    width: 2000px;
    height: 2000px;
}
#rightDiv { 
    right: 0px;
    top: 0px;
    position: fixed;
}

<body>
<div id='rightDiv'>
    I am in the right-top corner    </div>
</body>
4

1 回答 1

0

这可以通过使用 jQuery 来完成:

$(function(){
    function moveDiv(){
        var divSize = $("#rightDiv").width();
        var windowSize = $("window").width();
        var leftPos = windowSize - divSize;
        var topPos = $("window").scrollTop();
        $("#rightDiv").css({"position":"absolute", "left":leftPos, "top":topPos});
    }
    moveDiv();
    $("window").scroll(function(){
        moveDiv();
    }
    );
    $("window").resize(function(){
        moveDiv();
    }
    );
});

这会将您的 div 设置为在文档加载时将自身定位到屏幕的右侧,然后在滚动屏幕时,它会重新计算位置。

本质上,我们根据 div 的宽度和窗口的大小进行计算,以确定将 div 放置在右上角的左侧位置。即使它是从左侧定位的,它仍然会产生位于屏幕右上角的效果。如果您需要任何澄清,请告诉我。

于 2013-07-02T23:43:51.147 回答