jquery - 如何动态设置滚动高度?

标签 jquery css scroll

我有一个高度为 1200 像素、宽度为浏览器窗口的 div。在那个 div 的正下方,我有另一个高度为 1000px 的 div。现在向下滚动时,您将能够滚动到第二个 div 的末尾。我想要的是设置滚动高度,例如我想说你应该只能滚动 1200 像素。这样访问者就看不到我的第二个 div。有什么方法可以用 JQuery 实现这一点吗?

我上传了一张强调我的问题的图片:

enter image description here

最佳答案

您可以处理 window.onscroll,如果用户滚动太远则阻止事件传播并将他们发送回他们应该查看的位置:

jsFiddle

window.onscroll = function (e) {
    var maxViewableHeight = 1400;
    if (document.body.scrollTop + window.innerHeight > maxViewableHeight) {
    console.log(document.body.scrollTop + window.innerHeight);
        e.preventDefault;
        document.body.scrollTop = maxViewableHeight - window.innerHeight;
        return false;
    }
}

更新

这是一个更加跨浏览器友好的版本,在 Chrome 25、Firefox 19、IE10/IE9、Safari 5、Opera 12 中进行了测试。在 IE、Safari 和 Opera 中它有一点反弹。特别是 Opera 流畅的滚动效果,让我更加欣赏 Firefox,因为它的流畅滚动非常完美。

window.onscroll = function (e) {
    var maxViewableHeight = 1400,
        scrollTop = getScrollTop();
    if (scrollTop + window.innerHeight > maxViewableHeight) {
        e.preventDefault();
        window.scrollTo(0, maxViewableHeight - window.innerHeight);
        return false;
    }
}

function getScrollTop() {
    if (typeof window.pageYOffset !== 'undefined') {
        return window.pageYOffset;
    }
    var body = document.body,
        docElement = document.documentElement;
    docElement = (docElement.clientHeight) ? docElement : body;
    return docElement.scrollTop;
}

关于jquery - 如何动态设置滚动高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704854/

相关文章:

jquery - 在 jquery 中捕获所有 ajax 请求

jquery - Bootstrap 导航子菜单根据页面限制向左或向右浮动

javascript - 当我在 jquery fullcalendar 中将 slotMinutes 设置为 50 值时出现错误

javascript - 如何使用每个有 mustache 的 javascript?

php - 使用 php 进行颜色缩放

javascript - 水平滚动新闻滚动条用 JS 或 JQuery 有什么好用的

javascript - 为什么我的 div 滚动不工作?

javascript - CSS/JavaScript - 当用户开始滚动时滚动捕捉

conditional-statements - smarty tags和css condition tags一样,请问如何解决?

jquery - Bootstrap 4 工具提示仍然存在,看起来很糟糕