首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止窗口在折叠下面滚动,直到按钮单击

防止窗口在折叠下面滚动,直到按钮单击
EN

Stack Overflow用户
提问于 2016-09-07 15:38:06
回答 1查看 1.2K关注 0票数 0

我有一种情况,我需要页面不能滚动超过某个点(我的英雄设置为100 an,用户应该根本不能滚动),然后点击一个按钮,滚动保护被禁用,然后用户会自动平滑地向下滚动到一个锚链接直接下面(基本上向下滚动100 an或整个窗口的高度)。我需要一个流畅的滚动动画,而不是只是一个快速跳跃。

我试过尝试使用以下代码的变体,但没有结果。到目前为止,它确实是错误的,跳来跳去,当您重新加载页面时,正文溢出被设置为隐藏,但是窗口的位置并不总是在屏幕的顶部,所以您仍然可以看到一些下面的折叠内容,但仍然不能滚动。

代码语言:javascript
运行
复制
function() {

function smoothScroll(){ 
    windowHeight = $('window').height();
    $('html, body').stop.animate({scrollTop: windowHeight}, slow);
}

$('.bottom-nav').on('click', '.fold-trigger', function(event) {
    $('.home').css('overflow', 'visible');
    setTimeout(smoothScroll(), 1000);

});

};

小提琴在这里:https://jsfiddle.net/njpatten/yxkvnymu/1/

EN

回答 1

Stack Overflow用户

发布于 2016-09-07 15:45:40

固定码

代码语言:javascript
运行
复制
function smoothScroll(){ 
    windowHeight = $(window).height();
    $('html, body').stop().animate({scrollTop: windowHeight}, "slow");
}

$('.bottom-nav').on('click', '.fold-trigger', function(event) {
    $('.home').css('overflow', 'visible');
    setTimeout(smoothScroll(), 1000);

});

固定小提琴:https://jsfiddle.net/yxkvnymu/2/

解释

您正在尝试通过执行$('window').height()来获取窗口高度,它正在搜索一个不存在的“窗口”DOM元素。您希望使用$(window).height() (注意在窗口周围省略引号),因为window不是DOM节点,它是一个对象。

此外,您使用的是具有多个错误的$('html, body').stop.animate({scrollTop: windowHeight}, slow);.stop无效,因为从$('html, body')返回的NodeList上的stop属性是要调用的函数。您应该使用$('html, body').stop()

另外,animate部分引用变量slow。jQuery的动画函数将"slow"作为字符串,因此这一行应该按如下方式编写:

代码语言:javascript
运行
复制
.animate({scrollTop: windowHeight}, "slow");

请注意,其中包含了引号,因为我们希望将"slow"的字符串值传递给jQuery的动画函数,而不是变量slow

最后,您在匿名函数中包围了所有代码,这似乎是不必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39374120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档