Jquery 和 Bootstrap 4 - 用于调整大小和滚动顶部的导航栏转换

Posted

技术标签:

【中文标题】Jquery 和 Bootstrap 4 - 用于调整大小和滚动顶部的导航栏转换【英文标题】:Jquery and Bootstrap 4 - Navbar transitions for resize and scrolltop 【发布时间】:2018-11-28 03:01:14 【问题描述】:

嗨,所以我遇到了我的初学者无法解决的障碍。使用 Bootstrap 4 导航栏和一些 jquery,我能够创建一个过渡,当用户滚动经过特定点时,将不可见的导航栏变成纯色。我试图在这里搜索一些提示和答案,但似乎找不到解决方案。这是我的滚动代码。

navScroll()
    $(document).ready(function() 
        $(window).scroll(function()
            if($(document).scrollTop() > 500) 
                $('.navbar').addClass('solid');
                $('.nav-link').addClass('black');
                $('.navbar-brand').addClass('black');
            
            else
                $('.navbar').removeClass('solid');
                $('.nav-link').removeClass('black');
                $('.navbar-brand').removeClass('black');
            
        );
    );

现在,当我将窗口宽度调整到超过 700 像素时,我希望导航栏变成纯白色,并在上下滚动时保持这种状态。只有当窗口大小超过 700 像素时,JQ 滚动代码才会重新发挥作用。

所以我尝试使用它来调整宽度:

navWidth()
    $(document).ready(function() 
        $(window).resize(function() 
            if($(document).width() < 700)
                $('.navbar').addClass('solid');
                $('.nav-link').addClass('black');
                $('.navbar-brand').addClass('black');
            
        )
    )

所以这就是我卡住的地方:我知道我需要做一些有条件的,但我卡住了如何继续。这是我尝试过但失败的一件事(当然它失败了,但我想看看它是否有效,它做了一半但不是全部)。

navCheck()
    $(document).ready(function() 
        if($(document).width() < 700)
          $(window).resize(function()
              $('.navbar').addClass('solid');
              $('.nav-link').addClass('black');
              $('.navbar-brand').addClass('black');
          )
      
      else if($(document).scrollTop() > 500) 
          $(window).scroll(function()
              $('.navbar').addClass('solid');
              $('.nav-link').addClass('black');
              $('.navbar-brand').addClass('black');
          )
      
      else
          $('.navbar').removeClass('solid');
          $('.nav-link').removeClass('black');
          $('.navbar-brand').removeClass('black');
      
   )

【问题讨论】:

你有工作的小提琴或codeply吗? 【参考方案1】:

你可以这样做:

$(window).on("load resize scroll", function(e)
    if($(document).width() < 700 || $(document).scrollTop() > 500) 
        $('.navbar').addClass('solid');
        $('.nav-link').addClass('black');
        $('.navbar-brand').addClass('black');
     
    else 
        $('.navbar').removeClass('solid');
        $('.nav-link').removeClass('black');
        $('.navbar-brand').removeClass('black');
    
);

编辑:或者如果您只想在滚动通道 500 上添加一个条件:

$(window).on("load resize scroll", function(e)
    if(($(document).width() < 700 && $(document).scrollTop() > 500)
       || $(document).scrollTop() > 500) 
        $('.navbar').addClass('solid');
        $('.nav-link').addClass('black');
        $('.navbar-brand').addClass('black');
     
    else 
        $('.navbar').removeClass('solid');
        $('.nav-link').removeClass('black');
        $('.navbar-brand').removeClass('black');
    
);

编辑:使用 $(window).on("load resize scroll", function(e)); 绑定 3 个事件,另一种方法是:

$(window).bind(
     load:function()

     ,
     resize:function()

     ,
     scroll:function()

    
);

因此,在加载调整大小或滚动时,您会检查宽度和滚动条位置。如果满足您的条件,您就有了可靠的导航。

【讨论】:

最佳实践。当你给予回答任何问题时。尝试解释一下您做了哪些更改或添加了哪些代码来实现结果。 感谢您的帮助。我实际上做了类似的事情,但我度过了最愤怒的时光。我从来没有想过使用.on。非常感谢!

以上是关于Jquery 和 Bootstrap 4 - 用于调整大小和滚动顶部的导航栏转换的主要内容,如果未能解决你的问题,请参考以下文章

用于Bootstrap(3和4)、jQueryMobile、Foundation、Bulma、FomanticUI和UIKit(或其他)的多模式日期和时间选择器

带有 wordpress jquery 的 Bootstrap 4

Bootstrap 4 webjar css 不适用于 Spring Boot + Thymeleaf

laravel 完整日历不适用于主题 JQuery 和 Bootstrap

bootstrap使用总结

将 Jquery 和 Bootstrap 与 Es6 Import 一起用于 React App