模拟固定的正确位置

时间:2013-07-01 16:33:35

标签: javascript css windows-phone-7 internet-explorer-9 mootools

基本上我正在做的是监听器,它检查水平滚动是否已经改变。如果滚动已更改,则它将重新定位div,因此它始终位于视口的左上角。使用getScroll()值非常简单。

但我怎样才能从左到右改变?问题是正确:0不起作用,因为它将div几乎放在屏幕中间,通过滚动或缩放,它将保持在那里(Windows Phone 7不支持position: fixed!)也许任何人遇到类似的问题,发现修复或计算方法对吗?

为什么身体总是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>

1 个答案:

答案 0 :(得分: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放在右上角。即使它位于左侧,它仍然会产生位于屏幕右上角的效果。如果您需要任何澄清,请与我们联系。