如何使浏览器保持在固定位置滚动?

时间:2011-12-27 20:12:50

标签: javascript scroll browser

如何防止浏览器滚动,或者如何让浏览器不断滚动到固定的位置?

我正在为Nintendo 3DS浏览器开发一个库。我使页面完全适合浏览器,但向上箭头使其滚动,因为底部屏幕是唯一被识别为可见区域的窗口。

我想这样做,所以div #bottomScreen是底部屏幕中唯一的东西,禁用滚动是我能想到的唯一可行的方法。

我已经想出如何通过

将其滚动到所述位置
document.body.scrollTop = 220;

如何让它不断进入这个位置?

使用setTimeout创建重复计时器并将上面的代码放入其中将不起作用。我相信这是因为这仅适用于页面加载之前。

关于如何执行它的任何建议?

4 个答案:

答案 0 :(得分:1)

更优雅的解决方案是在调用该方法时禁用滚动(从顶部或其他任何位置滚动到220的位置),并在用户采取适当的操作等时重新启用它... jQuery示例:

$('body').css('overflow', 'hidden'); // removes scrollbars entirely
$('body').css('overflow', 'auto'); // re-enable scrolling

否则使用setInterval()以非常短的间隔(如10ms)重复触发滚动功能。如果你打算这样做,最好添加一些逻辑来查看窗口是否已经滚动到大约正确的位置(允许+/- 10px或其他东西),这样对用户来说并不是非常刺耳。 / p>

答案 1 :(得分:1)

即使在页面加载后它也应该工作。这是代码,虽然我不确定代码的意图是什么,可能会让用户烦恼。

setInterval( function(){ document.body.scrollTop = 200 }, 500 ); // set your time

答案 2 :(得分:0)

我在某些网站上看到过的最佳方式(比如我认为推特或推出图片时的脸谱),这就是将溢出属性设置为隐藏在body元素上。这可以防止任何滚动,因此当您这样做时,您需要担心的是内容的位置。

我猜你需要将内容包装在某种容器元素中,当你更改body元素的溢出时,你还要设置容器的y坐标以显示正在查看的页面的特定区域。

这是迄今为止我见过的最好的事情,因为它不需要定时器等。

答案 3 :(得分:0)

您可以为滚动事件添加事件侦听器,然后设置位置。