【问题标题】:resetting a function for responsive重置响应的功能
【发布时间】:2016-08-02 16:03:05
【问题描述】:

我有以下代码根据滚动事件添加/删除 .nav-up 和 .nav-down,除了屏幕

脚本

  function hasScrolled() {
    if($( window ).width() > 768) {
    var st = $(this).scrollTop();
    if (Math.abs(lastScrollTop - st) <= delta)
    return;

    if (st > lastScrollTop && st > navbarHeight ) {

    // Scroll Down
    $('#s-nav').removeClass('nav-down').addClass('nav-up');

    } else {

    // Scroll Up
    if (st + $(window).height() < $(document).height()) {
    $('#s-nav').removeClass('nav-up').addClass('nav-down');
  }
}
lastScrollTop = st;
}
}

html

<nav id="s-nav" class="nav-down"> .... </div>

css

#s-nav { position: fixed; }

#s-nav.nav-up { top: -75px; }

@media screen and (max-width: 768px) {

  #s-nav.nav-up { top: 0; }
}

但是,当从移动设备切换到屏幕尺寸(响应式)时,屏幕尺寸会“上升”,就像窗口滚动一样。我想“重置”该功能,以便在屏幕尺寸为“向下”时保持“向下”

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    你可以在$(window).width() &lt;= 768时添加一行来设置你想要的类:

    function hasScrolled() {
        if($( window ).width() > 768) {
            var st = $(this).scrollTop();
            if (Math.abs(lastScrollTop - st) <= delta)
                return;
    
            if (st > lastScrollTop && st > navbarHeight ) {
    
                // Scroll Down
                $('#s-nav').removeClass('nav-down').addClass('nav-up');
    
            } else {
    
                // Scroll Up
                if (st + $(window).height() < $(document).height()) {
                    $('#s-nav').removeClass('nav-up').addClass('nav-down');
                }
             }
        }else{
            $('#s-nav').removeClass('nav-up').addClass('nav-down');
        }
        lastScrollTop = st;
    }
    

    【讨论】:

    • 这行得通,不确定具体如何,但问题已解决!谢谢
    • 这是因为当window小于768时,#s-nav采用'nav-down'类,所以当你调整大小时,它仍然有这个类,所以它不会上去!不确定是否清楚;)
    猜你喜欢
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2021-11-04
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多