基本上我正在做的是监听器,它检查水平滚动是否已更改。如果 scroll 改变了,那么它会重新定位 div,所以它总是在视口(viewport)的左上角。使用 getScroll()
值非常容易。
但是我怎样才能从左到右改变呢?问题是对的:0 不起作用,因为它将 div 几乎放在屏幕中间,通过滚动或缩放,它会留在那里(Windows Phone 7 不支持 position: fixed
!) 也许有人遇到过类似的问题并找到了解决方法或正确的计算方法?
另外,为什么 body 总是 1024px(与视口(viewport)大小相同)?有没有办法获得网站的总大小?
到目前为止我只使用过的变量是:
window.getScroll().x
、document.body.scrollWidth
和 window.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>
最佳答案
这可以通过使用 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 放在右上角的左侧位置。即使它位于左侧,它仍然会产生位于屏幕右上角的效果。如果您需要任何说明,请告诉我。
关于javascript - 模拟固定的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409401/