【问题标题】:Bootstrap 4 background image full-height with navbar no scrollingBootstrap 4背景图像全高,导航栏无滚动
【发布时间】:2018-09-02 05:55:57
【问题描述】:

我有一个带有导航栏的页面。 我想向页面(不是导航栏)添加响应式背景图像。

如果我将页面设置为 100% 高度,它会用滚动条溢出页面。

这应该如何实现?我不知道。

.bg { 
    /* The image used */
    background-image: url("http://via.placeholder.com/350x150");


    /* Center and scale the image nicely */
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>

<div class="main-page">
  <div class="bg"></div>
  <div class="data">
    bla bla bla
  </div>

</div>

编辑:jsfiddle - JSFIDDLE

【问题讨论】:

    标签: html css twitter-bootstrap bootstrap-4 background-image


    【解决方案1】:

    您可以使用 Bootstrap 4 flexbox 工具,并将 flex:1 1 auto 添加到 main-page 以填充高度(无需滚动)。

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

    <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"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" ></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
        
    <style>
    body {
        min-height: 100vh;
    }
    .flex-fill {
       flex: 1 1 auto;
    }  
    .bg { 
        background-image: url("http://placehold.it/350x150");
        background-position: center;
        background-repeat: no-repeat;
        background-size: cover;
    }
    </style>
    <body class="d-flex flex-column">
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand" href="#">Navbar</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Features</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Pricing</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link disabled" href="#">Disabled</a>
                </li>
            </ul>
        </div>
    </nav>
    <div class="main-page d-flex flex-column flex-fill">
        <div class="bg flex-fill"></div>
        <div class="data">
            bla bla bla
        </div>
    </div>
    </body>

    注意:flex-fill 类将是 included in Bootstrap 4.1,因此在 4.1 发布时将不再需要 flex-fill 的额外 CSS。


    相关问题:
    Bootstrap 4 Navbar and content fill height flexbox
    Bootstrap 4: How to make the row stretch remaining height?

    【讨论】:

      【解决方案2】:

      将以下 css 规则添加到您的 .bg 类:

      height: calc(100vh - 56px)
      

      这将计算高度(100% 视口高度减去 56px 的导航栏高度)。

      工作代码sn-p:

      <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>
          
      <style>
      .bg { 
          /* The image used */
          background-image: url("http://via.placeholder.com/350x150");
      
      
          /* Center and scale the image nicely */
          background-position: center;
          background-repeat: no-repeat;
          background-size: cover;
          height: calc(100vh - 56px);
      }
      </style>
      
      <nav class="navbar navbar-expand-lg navbar-light bg-light">
          <a class="navbar-brand" href="#">Navbar</a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="navbarNav">
              <ul class="navbar-nav">
                  <li class="nav-item active">
                      <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Features</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link" href="#">Pricing</a>
                  </li>
                  <li class="nav-item">
                      <a class="nav-link disabled" href="#">Disabled</a>
                  </li>
              </ul>
          </div>
      </nav>
      
      <div class="main-page">
          <div class="bg"></div>
          <div class="data">
              bla bla bla
          </div>
      
      </div>

      【讨论】:

      • 这迫使你在两个地方依赖导航栏的高度。如果我现在更改导航栏高度,我也必须在这里更改它
      猜你喜欢
      • 2018-10-24
      • 2021-10-10
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2016-05-09
      • 1970-01-01
      相关资源
      最近更新 更多