【问题标题】:Stick element to top of page on scroll and then move it off?在滚动时将元素粘贴到页面顶部然后将其移开?
【发布时间】:2017-03-09 05:40:21
【问题描述】:

我正在尝试创建与此页面类似的效果,如果您转到宣言,您将在用户滚动时看到左侧的标题example。当面板位于末尾时,标题会移开。

我想用 3 个面板来做这件事,我不确定如何去做,而我写的 JS 没有应用任何东西

https://jsfiddle.net/HV9HM/5906/

var stickyTop = $('h2').offset().top;

$(window).on( 'scroll', function(){
        if ($(window).scrollTop() >= stickyTop) {
            $('h2').css({position: "fixed", top: "0px"});
        } else {
            $('h2').css({position: "relative", top: "0px"});
        }
    });

更新

我已经构建了一些更接近我需要的东西,但是我遇到的问题是,当您向下滚动到下一部分时,我希望第一部分中的标题贴在其父级的底部在 - 这有意义吗?这是一个示例 jsfiddle.net/HV9HM/5910

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您需要将代码放在 ready 函数中,因为您正在尝试访问尚未完全加载的元素,这就是您在检查控制台时收到错误消息的原因。

    $(function(){ // need this ready function
    
        var stickyTop = $('h2').offset().top;
    
        $(window).on( 'scroll', function(){
    
            if ($(window).scrollTop() >= stickyTop) {
                $('h2').css({position: "fixed", top: "0px"});
            } else {
                $('h2').css({position: "relative", top: "0px"});
            };
    
        });
    
    });
    

    【讨论】:

    • 是的,这是错误的问题,但这并不能解决滚动上的固定和相关问题
    • @Nicholas 他的代码完全按照它说的做,但问题是他在 HTML 中有多个 h2 标签,所以 JS 不知道该关注哪一个。他应该重做 HTML,这样它才能工作。
    • 确实,我的错。
    • 谢谢@AmericanSlime,不是我想要的,但感谢您的建议。我已经建立了一些更接近我需要的东西,但是我遇到的问题是,当您向下滚动到下一部分时,我希望第一部分中的标题贴在其父项的底部 - 确实这有意义吗?这是一个例子jsfiddle.net/HV9HM/5910
    【解决方案2】:

    试试这个:

    $(function(){
     var stickyTop="";
     $(window).on( 'scroll', function(){
            if ($(window).scrollTop() >= stickyTop) {
                 stickyTop = $('h2').offset().top;
                $('h2').css({position: "fixed", top: "0px"});
            } else {
               stickyTop = $('h2').offset().top;
                $('h2').css({position: "relative", top: "0px"});
            }
        });
    });
    

    【讨论】:

    • 我已经更新了我的问题@miguelmachado - 我现在让它工作得更好,但它仍然不正确jsfiddle.net/HV9HM/5910
    • 为每个 h2 元素添加一个自定义属性存储 true for is on top 并创建一个函数,为每个粘在顶部的元素添加每个标题顶部的填充量.. 你能理解这个?我正在打电话,所以我现在无能为力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多