Bootstrap - 如何将您的导航栏放置在背景图片之上?

15

我是Bootstrap的新手。 这是我试图制作的设计: 在此输入图片描述

如您所见,导航栏位于背景图片的顶部。 这是我拥有的:

 <!DOCTYPE html>
    <html lang="en">
    <head>
               <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

<style>
        <style>
.navbar-default {
background: none;
border: none;
}

body{
    height:100%;
}
        html{
            background: url('sun.jpg') no-repeat center center fixed;
            -webkit-background-size:cover;
            -moz-background-size:cover;
            -o-background-size:cover;
            background-size:cover;
            background-position: 0 0;

        }
        </style>

    </head>
<body>

        <nav class="navbar navbar-default">
            <div class="container">
                <ul class="nav navbar-nav"> 
                    <li class="active"><a href="#">home</a></li>
                    <li><a href="#">ask a question!</a></li>
                    <li><a href="#">learn</a></li>
                    <li><a href="#">contact</a></li>
                </ul>
            </div>

        </nav>

</body>
</html>

给出:

enter image description here

我不知道怎么把它放在图片本身而不是上面。

简短的副问题:为什么来自 Vimeo 的图片看起来比我使用的来自太阳的图片好得多?在我的图片上,你可以看到所有的像素等等。这是因为它可能是一张太小的图片,必须被拉伸很多才能适应整个页面吗?

编辑:

这是我尝试过但没有成功的方法

    <nav class="navbar navbar-default">
        <div class="container">
            <ul class="nav navbar-nav"> 
                <li class="active"><a href="#">home</a></li>
                <li><a href="#">ask a question!</a></li>
                <li><a href="learn.html">learn</a></li>
                <li><a href="#">contact</a></li>
            </ul>
            <style>
            .navbar{
                background:transparent;
            }
            </style>
        </div>

    </nav>

尝试将背景图设置为除导航栏以外的包含所有内容的容器? - Siddharth
使你的导航栏背景透明化 - Farrukh Faizy
5个回答

9

Bootstrap 4

默认情况下,导航栏没有背景色,因此是透明的。只需记住使用 navbar-lightnavbar-dark,这样链接颜色与背景图的对比度相匹配。 切换器 (toggler) 的显示也基于 navbar-(dark 或 light)

https://www.codeply.com/go/FTDyj4KZlQ

<nav class="navbar navbar-expand-sm fixed-top navbar-light">
    <div class="container">
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbar1">
            <span class="navbar-toggler-icon"></span>
        </button>
        <a class="navbar-brand" href="#">Brand</a>
        <div class="collapse navbar-collapse" id="navbar1">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Link</a>
                </li>
            </ul>
        </div>
    </div>
</nav>

Bootstrap 3

使用 navbar-fixed-top,然后更改CSS使其透明。这是一个自定义透明导航栏的例子。 http://www.codeply.com/go/JNy8BtYSem

  <nav id="nav" class="navbar navbar-fixed-top" data-spy="affix">
    <div class="container">
        <div class="navbar-header">
      <a href="#" class="navbar-brand">Brand</a>
      <a class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <i class="fa fa-bars"></i>
      </a>
      </div>
      <div class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
          <li><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
        </ul>
        <ul class="nav pull-right navbar-nav">
          <li>
           <a href="#">Link</a>
          </li>
        </ul>
      </div>        
    </div>
  </nav>

这个问题只是为了让导航栏透明。 如果想在滚动后或某个导航栏位置更改样式,请参见:使用Bootstrap 4在滚动时动画缩小导航栏


关于侧问题有什么想法吗? - LandonZeKepitelOfGreytBritn
这看起来很糟糕。Fixed-top 会在向下滚动时使导航栏重叠文本。 - Manuel Fedele
1
@MilesDavis - 你认为这个回答明确地回答了问题,但它仍然值得被点踩吗?这并不是我的错,“这看起来很糟糕”。如果您想在滚动后更改样式/颜色,请参考此链接:https://dev59.com/aJ_ha4cB1Zd3GeqPuCZy#42250478 - Carol Skelly

1
您需要从导航栏中移除背景:
.navbar-default {
    background: none;
}

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<style>
html,
body {
  height: 100%;
 background: red;
}

.navbar-default {
    background: none;
   border: none;
}
</style>

<!-- Wrap all page content here -->
<div id="wrap">
  
  <!-- Fixed navbar -->
  <div class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">Project name</a>
      </div>
      <div class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li class="active"><a href="#">Home</a></li>
          <li><a href="#about">About</a></li>
          <li><a href="#contact">Contact</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="#">Action</a></li>
              <li><a href="#">Another action</a></li>
              <li><a href="#">Something else here</a></li>
              <li class="divider"></li>
              <li class="dropdown-header">Nav header</li>
              <li><a href="#">Separated link</a></li>
              <li><a href="#">One more separated link</a></li>
            </ul>
          </li>
        </ul>
      </div><!--/.nav-collapse -->
    </div>
  </div>
  
</div>


我也尝试了你的解决方案,但没有起作用。我编辑了我的问题(我也尝试了非ISO透明),我有什么误解吗?另外,你有关于副问题的任何想法吗? - LandonZeKepitelOfGreytBritn
你的代码中在哪里加载了bootstrap.css?你的自定义样式需要在加载bootstrap之后。 - Turnip

0
.navbar{
    background:transparent;
}

这将使您的背景透明。


0

只需获取Body中的背景图像,然后使用此代码

             <div class="navbar navbar-inverse navbar-fixed-top">
              <div class="container">
                <div class="navbar-header">
                  <button type="button" class="navbar-toggle" data-         
                toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                  </button>
                  <a class="navbar-brand" href="#">Brand</a>
                </div>
                <div class="collapse navbar-collapse">
                  <ul class="nav navbar-nav">
                    <li class="active"><a href="#">Home</a></li>
                    <li><a href="#about">About</a></li>
                  </ul>
                  <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">Username</a></li>
                  </ul>
                </div>
              </div>
            </div>

            <div class="wide">
                <div class="col-xs-5 line"><hr></div>
                <div class="col-xs-2 logo">Logo</div>
                <div class="col-xs-5 line"><hr></div>
            </div>

            <div class="container">
              <div class="text-center">
                <h1>Content</h1>
              </div>
            </div>

在Navbar div中也使用了样式style="opacity:0.6;"


0

背景颜色设置在 .navbar-default 类上,因此请确保您的 CSS 使用该类来将栏透明化。例如:

.navbar-default{background-color: transparent;}

如Turnip所述,在您的中引导样式后应用此样式。
如果您真的想在使其工作时强制执行它,请将以下属性添加到<导航>元素中。
style="background-color: transparent;"

所以你的nav元素看起来像这样:

 <nav class="navbar navbar-default" style="background-color: transparent;">

然而,将此内容放在CSS文件中而不是作为内联HTML显然更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接