首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery以防止在顶部和底部的某个点滚动

问jQuery以防止在顶部和底部的某个点滚动
EN

Stack Overflow用户
提问于 2014-02-24 17:26:12
回答 2查看 9.2K关注 0票数 4

我有一个弹出式媒体查看器,当用户点击缩略图时会触发它。新的查看器被放置在背景屏幕上,并在其下面显示图像和用户注释。如果用户单击一个图像,比如在页面的一半处,“弹出”查看器将在该位置显示。比方说,从顶部到2000便士。此时,用户可以向下滚动以查看图像注释,但是如果他们滚动得太远,或者向上滚动,他们就会看到底层图片库。使用jQuery,是否有一种方法可以防止用户在弹出后向上滚动,或者在弹出结束后滚动。

因此,假设弹出从顶部的2000 at开始,而弹出值高达3500 at,用户将只能从顶部滚动从2000 at开始的3500 pop。在弹出查看器关闭之前,它们不能在上面或下面滚动。我希望这是有意义的。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 18:28:39

这是一个如何限制2点之间滚动的示例。

http://jsfiddle.net/n7BSs/

代码语言:javascript
复制
$(document).ready(function(){
    var eTop = $("#test").offset().top;
    $(document).scrollTop(eTop);
    var eHeight = $("#test").height();
    var eBottom = eTop + eHeight - $(window).height();
    $(document).on("scroll", function(e){
        var windowScrollTop = $(window).scrollTop();
        if(windowScrollTop < eTop){
            console.log("not allowed");
            $(document).scrollTop(eTop);
        }
        else if(windowScrollTop > eBottom){
            $(document).scrollTop(eBottom);
        }
        else{
            console.log("allowed");
        }
    });
});
票数 5
EN

Stack Overflow用户

发布于 2015-11-19 11:10:46

我对代码做了一些改进,以避免闪烁,以防要保存在视图端口中的对象比窗口小:

https://jsfiddle.net/SebastienFauvel/zex8mjr2/

代码语言:javascript
复制
$(function () {
    var scrollMin = function (selector) {
        var scrollY;
        scrollY = $(selector).offset().top;
        scrollY = Math.max(scrollY, 0);
        return scrollY;
    };
    var scrollMax = function (selector) {
        var scrollY;
        scrollY = $(selector).offset().top + $(selector).height() - $(window).height();
        scrollY = Math.min(scrollY, $(document).height() - $(window).height());
        scrollY = Math.max(scrollY, scrollMin(selector));
        return scrollY;
    };
    var selector = "#test";
    $(document).scrollTop(scrollMin(selector));
    $(document).on("scroll", function (e) {
        var windowScrollTop = $(window).scrollTop();
        if (windowScrollTop < scrollMin(selector)) {
            console.log("hit top");
            $(document).scrollTop(scrollMin(selector));
        } else if (windowScrollTop > scrollMax(selector)) {
            console.log("hit bottom");
            $(document).scrollTop(scrollMax(selector));
        }
    });
});

希望这能有所帮助!

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

https://stackoverflow.com/questions/21994628

复制
相关文章

相似问题

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