首页 > 解决方案 > Bootstrap 3 具有 3 列 Flex 或 Col 的全宽和高布局

问题描述

我对这个简单的页面有点卡住了(我知道你可能会对此视而不见,请耐心等待)。我已经使用 Bootstrap 很多年了,直到我的经理想在移动设备上看到它。我尝试了许多不同的方法,但没有一个与下一个屏幕截图的布局相匹配,Navbar中间有一个。宽度对我来说很好,但我在设置高度时遇到了问题。

在此处输入图像描述

另外,在桌面上我尝试使用三列布局,它看起来很好,直到我添加了一个中间导航栏(它在背景中看起来臃肿和可怕),并且所有列都没有使用正确的高度,所以我怀疑 CSS 是有点不对。正如您在我编写的代码片段中看到的那样,我已经尝试过,height:autoheight:fixed它们都不是完美的。

在此处输入图像描述

<div class="container">
<div class="row">
    <div class="col-sm-5"></div>
    <div class="col-sm-2"></div>
    <div class="col-sm-5"></div>
</div>

我将它用于 col,但我确信我会告诉我应该使用 flex。

我正在使用此背景作为图像,我已经四处寻找模板或示例,但其中大多数都使用一个图像作为全角背景。柱子高度不高

    .MainBackgroundImages {
        padding-bottom: 40%; 
    background-position: 50% 50%;
    background-repeat: no-repeat;
    background-size: cover;
}

这是我写的一个片段,你可以看到高度有点问题。

.leftHalf {
  background-image: url('https://via.placeholder.com/2000/FF0000/FFFFFF/?text=Left');
}

.centerHalf {
  background-color: black;
  color: white;
  text-align: center
}

.rightHalf {
  background-image: url('https://via.placeholder.com/2000/FFFF00/00000/?text=right');
}

.MainBackgroundImages {
  padding-bottom: 40%;
  background-position: 50% 50%;
  background-repeat: no-repeat;
  background-size: cover;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div style="”clear: both;"></div>
<div class="row">
  <div class="col-sm-5 MainBackgroundImages leftHalf"></div>
  <div class="col-sm-2 centerHalf">
    <br>
    <div class="navbar navbar-default" id="custom-bootstrap-menu" role="navigation">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Ishka Sport</a> <button class="navbar-toggle" data-target=".navbar-menubuilder" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
        </div>
        <div class="collapse navbar-collapse navbar-menubuilder">
          <ul class="nav navbar-nav navbar-left">
            <li>
              <a href="/">Home</a>
            </li>
            <li>
              <a href="/products">kayak</a>
            </li>
            <li>
              <a href="/about-us">Nipper Boards</a>
            </li>
            <li>
              <a href="/contact">Accessories</a>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>
  <div class="col-sm-5 MainBackgroundImages rightHalf">
    <div class="col-md-12 text-center"></div>
  </div>
</div>

标签: htmlcsstwitter-bootstrap

解决方案


对于全高布局,您需要告诉父元素columns获取视口的所有可用高度,这可以通过定义下一个类来完成:

full-height {
  height: 100vh;
}

并将此类分配给row包装columns. 在此之后,您需要设置您必须设置height的三列的属性100%(因此它们将使用父元素的 100% 高度)。

现在,在小型设备 ( SM ) 上,您希望更改之前的布局:所有列都将使用 Bootstrap 的 12 个可用网格。因此,您将不得不使用下一个媒体查询来管理列的高度(此处记录了 Bootstrap 3 断点:Bootstrap 3 Media Queries):

@media only screen and (max-width : 992px) {

    .leftHalf {
        height: 40%;
    }

    .centerHalf {
        height: 20%;
    }

    .rightHalf {
        height: 40%;
    }
}

前面的所有解释都用于下一个工作示例,检查它是否以全屏模式播放并调整浏览器大小。正确显示中间的布局是你的功课navbar。希望这可以帮助您作为所需布局的基础。

.full-height {
  height: 100vh;
}

.leftHalf {
  background-image: url('https://via.placeholder.com/2000/FF0000/FFFFFF/?text=Left');
  height: 100%;
}

.centerHalf {
  background-color: black;
  color: white;
  text-align: center;
  height: 100%;
}

.rightHalf {
  background-image: url('https://via.placeholder.com/2000/FFFF00/00000/?text=right');
  height: 100%;
}

.MainBackgroundImages {
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

/* Custom style for Small Devices, Tablets */
@media only screen and (max-width : 992px) {

    .leftHalf {
        height: 40%;
    }

    .centerHalf {
        height: 20%;
    }

    .rightHalf {
        height: 40%;
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<div class="container-fluid">
<div class="row full-height">

  <div class="col-md-5 MainBackgroundImages leftHalf"></div>

  <div class="col-md-2 centerHalf">
    <div class="navbar navbar-default" id="custom-bootstrap-menu" role="navigation">
      <div class="navbar-header">
        <a class="navbar-brand" href="#">Ishka Sport</a>
        <button class="navbar-toggle" data-target=".navbar-menubuilder" data-toggle="collapse" type="button">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
      </div>
      <div class="collapse navbar-collapse navbar-menubuilder">
        <ul class="nav navbar-nav navbar-left">
          <li><a href="/">Home</a></li>
          <li><a href="/products">kayak</a></li>
          <li><a href="/about-us">Nipper Boards</a></li>
          <li><a href="/contact">Accessories</a></li>
        </ul>
      </div>
    </div>
  </div>

  <div class="col-md-5 MainBackgroundImages rightHalf"></div>

</div>
</div>


推荐阅读