【问题标题】:Transparent navbar over background image背景图像上的透明导航栏
【发布时间】:2018-02-21 15:29:39
【问题描述】:

我正在尝试找出让我的英雄/背景图像位于透明 Bootstrap 4 导航栏后面的最佳方式。一些建议是将背景图像应用到页面,这可行,但我不希望我的应用程序内所有其他静态页面上的背景图像......只有登录页面(Rails 应用程序)。

我尝试在导航栏和/或包含背景图像的容器上使用负边距,但到目前为止一切都带有负面影响。

我确信有一种简单的方法可以做到这一点,即使是我从 Bootstrap 中选择使用的特定导航栏,但我运气不佳。

更新:

从以下位置更改导航栏类:
<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
至:
<nav class="navbar fixed-top navbar-expand-md navbar-light bg-faded">
达到了我想要的效果。

.navbar {
  background-color: transparent !important;
}

.bgimg {
  height: 600px;
  background-image: url('https://images.unsplash.com/photo-1473923377535-0002805f57e8?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d239ac0e409e18cf74ace503c491714f&auto=format&fit=crop&w=1469&q=80');
  background-attachment: fixed;
  background-position: center top;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">Navbar</a>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item">
        <a class="nav-link" href="#">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Link</a>
      </li>
    </ul>
  </div>
</nav>

<div class="container-fluid bgimg"></div>

【问题讨论】:

  • 为什么不使用固定导航栏? jsfiddle.net/mgys77se
  • Bootstrap 4 的 beta 版本现在真的开始过时了...
  • @ZimSystem 哦,天哪……这很简单。是的,它有效,但在 Bootstrap 4 中它只是 fixed-top 而不是 navbar-fixed-top 我相信。我更新了我的问题以获得最新的 CDN。谢谢。
  • @WebDevBooster Gotcha...我更新了。谢谢。
  • navbar-toggleable- 也需要替换为 navbar-expand-

标签: css bootstrap-4


【解决方案1】:

您使用的是background-attachement:fixed,因此只需将相同的背景添加到导航栏,并在需要时使用白色叠加层来控制不透明度:

.navbar {
  background-image:
  linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)), 
  url('https://images.unsplash.com/photo-1473923377535-0002805f57e8?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d239ac0e409e18cf74ace503c491714f&auto=format&fit=crop&w=1469&q=80');
  background-attachment: fixed;
  background-position: auto,center top;
}

.bgimg {
  height: 600px;
  background-image: url('https://images.unsplash.com/photo-1473923377535-0002805f57e8?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d239ac0e409e18cf74ace503c491714f&auto=format&fit=crop&w=1469&q=80');
  background-attachment: fixed;
  background-position: center top;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>

<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">Navbar</a>

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item">
        <a class="nav-link" href="#">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Link</a>
      </li>
    </ul>
  </div>
</nav>

<div class="container-fluid bgimg"></div>

【讨论】:

  • 这是一个非常酷的解决方案。谢谢你。我最终将 ala cmets 周围的一些导航栏类更改为我原来的帖子,但我认为这是一个很好的替代方法。
【解决方案2】:

为什么不将您的.bgimg 设置为position: absolute;

像这样:

.bgimg {
  height: 600px;
  position: fixed;
  top: 0;
  left: 0;
  background-image: url('https://images.unsplash.com/photo-1473923377535-0002805f57e8?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d239ac0e409e18cf74ace503c491714f&auto=format&fit=crop&w=1469&q=80');
  background-attachment: fixed;
  background-position: center top;
}

请记住为您的导航栏应用更高的 z-index。

this fiddle.

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多