使用Bootstrap 4在全屏高度响应div之后放置html

时间:2019-01-04 23:52:17

标签: html css bootstrap-4

基本上,我有3个主要组成部分:1个导航栏,1个内容分区和1页脚。

我终于使我的设计对前两个组件有所响应,但对页脚却没有响应。

我的内容容器(父级)具有将高度设置为100%的类h-100,子级也具有100%值,唯一的问题是,当我使用检查器时,我看到我的父容器被识别为具有屏幕尺寸,并且因为页脚位于第一部分的后面(有3个或更多部分应该是屏幕高度减去导航栏的3倍或更多)

这是结果html的复制品(我通常使用Angular)

@media (max-width: 979px) {
  .section {
    padding-top: 0px;
  }
}

.section{
	display: flex;
	min-height: 100%;
    height: 100%;
    border: 1px solid black;
    padding-top: 60px;
}

.inner-section{
	padding:5%;
	border: 1px solid black;
}

html, body {height: 100%;}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>

<nav class="navbar navbar-expand-md navbar-light bg-success fixed-top">
  <div class="container-fluid">
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarAHS" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarAHS">
      <ul class="navbar-nav mr-auto">
         <li class="nav-item">
           <a class="nav-link" >testleft</a>
         </li>
      </ul>
      <ul class="navbar-nav mx-auto order-0">
  	     <li class="nav-item">
      	   <a class="nav-link">testmiddle</a>
      	 </li>
      </ul>
      <ul class="navbar-nav ml-auto">
         <li class="nav-item">
           <a class="nav-link" href="#hello">testRight</a>
         </li>
      </ul>
    </div>
  </div>
</nav>

<div class="container-fluid h-100">
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10 h-100">
			hello
		</div>
	</div>
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10 h-100">
			hi
		</div>
	</div>
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10 h-100">
			hey
		</div>
	</div>
</div>

<div class="row">
	Footer is not placed correctly
</div>

2 个答案:

答案 0 :(得分:1)

您的问题是您要为容器指定高度100%,但要指定高度的100%?在您的情况下,body标签为body,但body从内容大小中获取高度(全屏显示第一个内容框的高度约为1000像素),然后还为每个内容框指定100%的高度。再次100%是什么?此示例为1000px的容器。因此,页脚在其认为的页面大小之后跳了起来,但随后每个其他内容框也都具有相同的高度,这将导致您的情况很奇怪。

简而言之,如果您需要在容器上保持100%的高度,请尝试向容器中添加overflow: auto。否则,您可以从容器中删除高度为100%的规则。

答案 1 :(得分:0)

这是我的解决方法。

请告诉我这是否不是最佳实践。

每行都以h-100作为类包装到div中并且有效

我还删除了container-fluid

HTML

@media (max-width: 979px) {
  .section {
    padding-top: 48px;
  }
}

.section{
	display: flex;
	min-height: 100%;
    height: 100%;
    border: 1px solid black;
    padding-top: 48px;
}

.inner-section{
	padding:5%;
	border: 1px solid black;
}
html, body {height: 100%;}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<nav class="navbar navbar-expand-md navbar-light bg-success fixed-top">
  <div class="container-fluid">
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarAHS" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarAHS">
      <ul class="navbar-nav mr-auto">
         <li class="nav-item">
           <a class="nav-link" >testleft</a>
         </li>
      </ul>
      <ul class="navbar-nav mx-auto order-0">
  	     <li class="nav-item">
      	   <a class="nav-link">testmiddle</a>
      	 </li>
      </ul>
      <ul class="navbar-nav ml-auto">
         <li class="nav-item">
           <a class="nav-link" href="#hello">testRight</a>
         </li>
      </ul>
    </div>
  </div>
</nav>
<div class="h-100">
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10">
			hello
		</div>
	</div>
</div>
<div class="h-100">
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10">
			hey
		</div>
	</div>
</div>
<div class="h-100">
	<div class="row section justify-content-md-center">
		<div class="inner-section col-md-10">
			ola
		</div>
	</div>
</div>
<div class="row">
	Footer is placed correctly.
</div>