当前位置: 首页 > 知识库问答 >
问题:

CSS滚动时更改导航栏背景颜色

乐正育
2023-03-14

我的导航栏有一个白色背景,但在登录页上它应该是透明的,当我向下滚动时它应该是白色的,在其他页面上它应该是白色的。

我使用的代码来自:滚动后更改导航栏颜色?

编辑:
所以我在下面的答案中添加了一个小提琴,但不知何故它不起作用

https://jsfiddle.net/jy6njukm/

这是我的代码

javascript:

$(document).ready(function(){
  var scroll_start = 0;
  var change_color = $('#change_color');
  var offset = change_color.offset();
  if (change_color.length){
    $(document).scroll(function() {
      scroll_start = $(this).scrollTop();
      if(scroll_start > offset.top) {
        // the white normal navbar
        $(".navbar-add").removeClass("navbar-trans");
      } else {
        // what the users sees when he lands on the page
        $(".navbar-add").addClass("navbar-trans");
      }
    });
  }
});

这里是我的navbar css:

.navbar-fixed {
  position: fixed;
  height: 70px;
  padding: 0px 30px;
  left: 0px;
  top: 0px;
  z-index: 50;
  width: 100%;
  background-color: white;
  box-shadow: 0 1px 5px 0 rgba(0,0,0,0.07),0 1px 0 0 rgba(0,0,0,0.03);
}
.navbar-trans {
  background-color: transparent !important;
  box-shadow: none !important;
}

我有我的导航栏html只有

<div class="navbar-fixed navbar-add">
.....
</div>

我的home.html.erb

<div class="container-fluid banner bg-picture" id="change_color" 
  style="background-image: linear-gradient(-225deg, rgba(0,0,0,0.2) 0%, 
  rgba(0,0,0,0.35) 50%), url('<%= asset_path('banner_logo.jpeg') %>')">
</div>

它可以工作,但现在的问题是,每次我刷新页面时,导航栏仍然是白色的,只有当我向上滚动到页面顶部时,导航栏才会变得透明。当我向下滚动时,它会变成白色,就像我想要的那样。

我检查了页面,每次刷新它时,类的背景色仍然是白色的,即使我在javascript中将其设置为透明
如何使导航栏的背景色在登录页上透明?

共有1个答案

赖运珧
2023-03-14

您的HTML应该是:

<div class="navbar-fixed navbar-add navbar-trans">
.....
</div>

因为它已经包含了navbar-trans类,所以它将保持透明。一旦用户滚动,javascript就会启动,并根据代码删除/addnavbar-trans类。

var landingPage = 'YOUR_LANDING_PAGE_URL';

function updateNavStyle() {
  if(landingPage.length > 0 && location.href.toLowerCase().indexOf(landingPage.toLowerCase()) >= 0) {
    var offset = $('#change_color').offset();
    var scroll_start = $(document).scrollTop();
    if (scroll_start > offset.top) {
      // the white normal navbar
      $(".navbar-add").removeClass("navbar-trans");
    } else {
      // what the users sees when he lands on the page
      $(".navbar-add").addClass("navbar-trans");
    }
  }
}

$(document).ready(function() {
  var scroll_start = 0;
  var change_color = $('#change_color');

  if (change_color.length) {
    $(document).scroll(updateNavStyle);
    updateNavStyle(); // Note this.
  }
});

这里,除了在scroll上绑定updateNavStyle函数外,我还添加了一个DOM就绪后对它的调用。因此,一旦页面加载,该功能将执行一次,并根据滚动位置应用样式。

更新:

如果您的登录页是“索引”。html',在希望此函数工作的地方,将其值写入变量landingPage。因此,该函数将不会在“关于”等其他页面中运行。html“或”联系人。html’。

 类似资料:
  • 我的导航栏有一个透明的背景,当用户向下滚动时,我想添加一个不同的背景。 我使用了这个问题的代码:滚动后更改导航条颜色? 我的代码现在如下所示: 当我向下滚动时,一切正常,背景和不透明度适用,但当我向后滚动到顶部时,这种样式仍然存在。我希望它更改回没有背景的默认样式。 谢啦

  • 当我滚动页面时,我很难让固定顶部导航栏更改背景颜色。 以下是JS中的函数: 这是一个名为“”的文件,在我加载后加载到页面底部(与位于同一文件夹中) 这里是html导航栏: 然后,我只有css用于更改导航栏背景颜色:

  • 我试图让我的导航栏在滚动时从透明背景变为黑色背景。与此模板类似:https://www.templatemonsterpreview.com/demo/58900.html?_gl=1*vx82om*\uGA*MTC0odazmti4xNJI3NTCxNdQW*\uGA\uFTPyEGT5LY*MTYyNzYwNzQ4Mi40LjEuMTYyNzYwODA2NC40Nw。。 这是我的html: 这

  • 如何设置没有背景色的导航栏? 当在div之后向下滚动导航条时,导航条会得到一个新的背景颜色(导航条应该固定在顶部,我在引导中使用) 我尝试过一些教程,但没有成功。 这是网站:http://attafothman.olympe.in/ 我说的是上面那个黑色导航条。

  • 博览会允许更改StatusBar的颜色和其他方面(在屏幕顶部)。 我没有看到任何关于修改导航栏(屏幕底部)背景颜色以匹配任何地方的内容。无需分离即可实现此功能吗?:

  • 我使用引导为一个主题,我看到了这个网站:http://www.luatix.org/en/,我喜欢navbar上的效果。向下滚动时更改颜色并更改元素的颜色。 谢啦