【问题标题】:place html after a full screen height responsive div using Bootstrap 4使用 Bootstrap 4 在全屏高度响应 div 之后放置 html
【发布时间】:2019-01-05 08:38:26
【问题描述】:

基本上我有 3 个主要组件:1 个导航栏、1 个内容 div 和 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>

【问题讨论】:

    标签: html css bootstrap-4


    【解决方案1】:

    您的问题是您为容器指定高度 100%,但是 100% 是什么?在您的情况下,主体标签,但主体从内容的大小(在全屏上对于第一个内容框约为 1000 像素)获取它的高度,然后您还为每个内容框指定 100% 的高度。又是什么的100%? 1000px 的容器就是这个例子。所以页脚会在它认为的页面大小之后跳起来,但是每个额外的内容框也会得到相同的高度,这会导致你的奇怪情况。

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

    【讨论】:

    • 对不起,我终于让它与你的例子一起工作了,再次感谢
    【解决方案2】:

    这是我的解决方案。

    如果这不是最佳做法,请告诉我。

    每一行都以 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>

    【讨论】:

    • 首先你找到了一个非常好的解决方案。我会说虽然这不是一个好方法,因为如果你不真正了解正在发生的事情并且只是以恰巧起作用的方式操纵 css。这可能会导致以后的复合效应。我所说的“坏习惯”是从 html 中删除 container-fluid 类,引导文档指定您应该将容器类作为模板的一部分,并且没有它会导致无法预料的影响
    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 2021-10-26
    • 1970-01-01
    • 2017-11-30
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多