javascript - 从Facebook的移动应用程序复制标题滚动效果

标签 javascript jquery html css

因此,当您打开 Facebook 应用程序并向下滚动页面时,标题会从屏幕顶部滑出,然后一旦您向上滚动,标题就会向下滑动。向下滑动可以发生在文档中的任何位置,并且总是在您开始向上滚动时立即向下滑动(所以我不希望在您滚动到文档顶部时让标题向下滑动)

我有点让它工作,但如果你一遍又一遍地上下滚动,你会注意到一些标题被切断,被切断的数量是完全随机的。

这是 js,我做了一个 jsfiddle的问题

var lastScrollTop = 0;
var headerTop;
var headerTopMax;
var headerNewTop = 1;
var stMax;
$(window).scroll(function (e) {
        var st = $(this).scrollTop();

    if (st > lastScrollTop) {
        if (st > $(".header").height())
            headerTop = $(".header").height();
        else
            headerTop = st;

        //console.log("downscroll");

        $(".header").css("top", "-" + headerTop + "px");
        stMax = st;
        headerNewTop = 1;
        console.log("headerNewTop = " + headerNewTop);
    }
    else {
        headerTopMax = $(".header").height();

        if (headerNewTop > 0) {
            if (stMax % st != NaN) {
                headerNewTop = headerTopMax - ((stMax % st) + 1);
                $(".header").css("top", "-" + headerNewTop + "px");
            }

        }

        console.log("stMax % st = " + ((stMax % st) + 1));
        console.log("headerTop = " + headerTop);
        console.log("headerTopMax = " + headerTopMax);
        console.log("headerNewTop = " + headerNewTop);
        console.log("stMax = " + stMax);
    }
    lastScrollTop = st;

});

谁能帮我弄清楚为什么要这样做。 干杯

最佳答案

好的,我想通了,似乎有一种更简单的方法可以做到这一点。良好的 OL CSS 转换为胜利;)

HTML:

<body style="height: 1000px;">
<div class="header container-fluid scrollEffect" style="width: 100%; background: #ececec; text-align: center;vertical-align: middle;">
<img src="http://www.logopeople.com.au/blog/wp-content/uploads/2011/11/free-australia-logo-design.jpg" width="150px" alt="" />
</div>
</body>

CSS:

.header {
    position: fixed;
    top: 0;
    max-width: 100%;
}
.header.scrollEffect {
    transition: top linear 0.5s;
    -webkit-transition: top linear 0.5s;
    -moz-transition: top linear 0.5s;
    -o-transition: top linear 0.5s;
}

JS:

var headerTop;
var lastScrollTop = 0;
$(window).scroll(function (e) {
        var st = $(this).scrollTop();

    if (st > lastScrollTop) {
        if (st > $(".header").height())
            headerTop = $(".header").height();
        else
            headerTop = st;
        $(".header").css("top", "-" + headerTop + "px");
    }
    else {
        $(".header").css("top", "0px");
    }
    lastScrollTop = st;

});

这是我更新的 js fiddle所以你可以看到它的实际效果:)

关于javascript - 从Facebook的移动应用程序复制标题滚动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868778/

相关文章:

javascript - 在javascript代码中将字符串分成多行

javascript - 使用 javascript 在选择列表中选择的下一个日期

javascript - 加载外部 javascript,但对一个文件 javascript 重复进行 HTTP 请求

javascript - 如何在React中调用点击事件的组件?

Javascript 函数未定义,ReferenceError

javascript - 如果我有这个实现的 javascript 文件,它什么时候会触发?

javascript - 如何使用 OR 条件链接选择器(如果 main 为空,则为替代结果集)

javascript - 如何在调整大小时显示用户的显示器分辨率?

html - 使用 CSS 定位 Div(在另一个 div 下方 float div)

javascript - 如何调用其他javascript文件中定义的静态JS函数