【问题标题】:Bootstrap 4 Smart Scroll Mobile Menu disappearing at topBootstrap 4 Smart Scroll Mobile 菜单在顶部消失
【发布时间】:2020-08-29 18:58:41
【问题描述】:

我正在尝试在引导程序上使用这个 Smart Scroll https://bootstrap-menu.com/detail-smart-hide.html,它在桌面上完美运行,但在移动设备上,导航栏在向下滚动时出现故障,然后返回顶部。回到顶部后,导航栏再次隐藏。我尝试了Bootstrap 4 Smart Scroll 的建议,但没有奏效。

js

if ($('.smart-scroll').length > 0) { // check if element exists
    var last_scroll_top = 0;
     $(window).scroll(function() {
        var scroll_top = $(window).scrollTop();
        if(scroll_top > 1) { $(".smart-scroll").addClass("scrolled-up");} else {$(".smart-scroll").removeClass("scrolled-up");}
        if(scroll_top < last_scroll_top) {
            $('.smart-scroll').removeClass('scrolled-down').addClass('scrolled-up');
        }
        else {
            $('.smart-scroll').removeClass('scrolled-up').addClass('scrolled-down');
        }
        last_scroll_top = scroll_top;
    });
} 

css

.smart-scroll{
    position: fixed !important;
    right: 0;
    left: 0;
    z-index: 1030!important;
    transition: all 0.3s ease-in-out;
}
.scrolled-down{
    transform:translateY(-100%) !important;
}
.scrolled-up{
    transform:translateY(0) !important;
}

我的模板导航栏是使用自定义 JS 将导航栏固定在顶部而不是使用固定顶部。

function loadWindowEvents() {
    $(window)
    .on("scroll", function() {
        loadSkills();
    });

    $(window)
    .on('scroll', function() {
        if ($(window)
            .scrollTop() >= 100) {
            $('.menu-wrap')
        .addClass('fixed');
    } else {
        $('.menu-wrap')
        .removeClass('fixed');
    }
});
}

测试原始代码这个故障存在于代码本身中,任何人都可以帮助解决这个问题并在 iPhone safari 上测试它吗?

如果有人可以帮助我申请我的代码,我发现有人发布了以下 JS,他们可以完美地工作。

window.location.hash.startsWith("#nav") && (window.location.hash = "", a());
let c = 0;
window.addEventListener("scroll", () => {
    const t = Math.abs(parseInt(document.documentElement.getBoundingClientRect().top));
    if (t <= n + 1 || t <= i.getBoundingClientRect().top + 1) return e.classList.remove("is-scrolled"), e.classList.remove("is-pinned"), void e.classList.remove("is-transition-enabled");
    t > n + 2 * e.offsetHeight && (e.classList.add("is-scrolled"), e.classList.contains("is-transition-enabled") || g(600).then(() => e.classList.add("is-transition-enabled"))), Math.abs(t - c) < 5 || (t < c ? e.classList.add("is-pinned") : e.classList.remove("is-pinned"), c = t)
}), t.addEventListener("click", async t => {
    t.preventDefault(), e.classList.contains("is-open") ? h() : a()
});

【问题讨论】:

    标签: javascript html jquery css twitter-bootstrap


    【解决方案1】:

    bootstrap 4 smartscroll 的答案是正确的。 只是.js最后一行的类型错误 lastScrollTop = st; 应该是 -> lastScrollTop = scroll_top;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 2017-06-22
      • 1970-01-01
      • 2014-03-13
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多