【问题标题】:div height 100% with header and footer - no tricksdiv 高度 100% 带页眉和页脚 - 没有技巧
【发布时间】:2015-08-17 09:57:01
【问题描述】:

我正在尝试创建一个布局,其中我有一个以 px 为单位的固定高度的页眉 (nav)、一个固定 px 的页脚以及它们之间的一个占据剩余空间的 div。

破解演示:http://jsfiddle.net/murid/0vcyqm3y/

我想要实现的是让那个蓝色 div 一直到页脚。请记住,我正在使用“推送” div 让页脚位于页面底部,以防页面内容很短,并且所述内容也可能很长,因此将页脚向下推。

我在 Stackoverflow 上查看过类似的问题,但答案涉及绝对位置、JavaScript 或正文上的背景颜色,我试图避免所有这些,并在内容 div 上有一个简单的纯 CSS 解决方案,背景颜色.

我正在使用Bootstrap顺便说一句。

CSS 和 HTML:

    html,
    body {
      height: 100%;
    }
    
    #wrap {
    	min-height: 100%;
    	height: auto !important;
    	height: 100%;
    	margin-bottom: -50px;
    }
    
    nav.navbar {
    	margin-bottom: 0;
    }
    
    section {
    	padding: 10px 0;
    	margin-left: -15px;
    	margin-right: -15px;
    }
    
    .section-primary {
    	background: #337ab7;
    }
    
    section > .row {
    	margin-left: 0;
    	margin-right: 0;
    }
    
    footer,
    .push {
    	height: 50px;
    }
    <div id="wrap">
    
    	<nav class="navbar navbar-inverse navbar-static-top" role="navigation">
    		<div class="container-fluid">
    			<div class="navbar-header">
    				<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
    					<span class="sr-only">Toggle navigation</span>
    					<span class="icon-bar"></span>
    					<span class="icon-bar"></span>
    					<span class="icon-bar"></span>
    				</button>
    				<a class="navbar-brand" href="">Logo</a>
    			</div>
    			<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    				<ul class="nav navbar-nav navbar-right">
    					<li>
    						<a href="">Logout</a>
    					</li>
    				</ul>
    			</div>
    		</div>
    	</nav>
    
    	<div class="container-fluid">
    		<section class="section-md section-primary">
    			<div class="row">
    				<div class="col-sm-12">
    					<div class="row">
    						<div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
    							<div class="panel panel-default">
    								<div class="panel-body">
    									Panel Body
    								</div>
    							</div>
    						</div>
    					</div>
    				</div>
    			</div>
    		</section>
    	</div>
    
    	<div class="push"></div>
    
    </div>
    
    <footer>
    	<nav class="navbar navbar-inverse navbar-static-top" role="navigation">
    		<div class="container-fluid">
    			<div class="navbar-header">
    				<a class="navbar-brand" href="">Copyright</a>
    			</div>
    			<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    				<ul class="nav navbar-nav navbar-right">
    					<li>
    						<a href="">Logout</a>
    					</li>
    				</ul>
    			</div>
    		</div>
    	</nav>
    </footer>

【问题讨论】:

    标签: html twitter-bootstrap css height


    【解决方案1】:

    我不得不说我不喜欢这个..但这是我知道的唯一 CSS 解决方案..

    http://codepen.io/pacMakaveli/pen/EjWXNw?editors=110

    否则,为了更简洁,请使用 flexbox。

    html,
    body {
      height: 100%;
    }
    
    #wrap {
    	height: 100%;
      display: table;
      width: 100%;
      border: 2px solid green;
    }
    
    #wrap > nav,
    footer {
      display: table-row;
    }
    
    nav.navbar {
    	margin-bottom: 0;
    }
    
    section {
    	padding: 10px 0;
    	margin-left: -15px;
    	margin-right: -15px;
    }
    
    .section-primary {
    	background: #337ab7;
    }
    
    .content {
      border: 3px solid red;
      display: table-cell;
      height: 100%;
    }
    
    section > .row {
    	margin-left: 0;
    	margin-right: 0;
    }
    <div id="wrap">
    
      <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
        <div class="container-fluid">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="">Logo</a>
          </div>
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
              <li>
                <a href="">Logout</a>
              </li>
            </ul>
          </div>
        </div>
      </nav>
    
      <div class="content">
        <div class="container-fluid">
          <section class="section-md section-primary">
            <div class="row">
              <div class="col-sm-12">
                <div class="row">
                  <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
                    <div class="panel panel-default">
                      <div class="panel-body">
                        Panel Body
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>
        </div>
      </div>
    
      <footer>
        <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
          <div class="container-fluid">
            <div class="navbar-header">
              <a class="navbar-brand" href="">Copyright</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul class="nav navbar-nav navbar-right">
                <li>
                  <a href="">Logout</a>
                </li>
              </ul>
            </div>
          </div>
        </nav>
      </footer>
    </div>

    【讨论】:

    • 似乎不起作用 - 蓝色 div 仍然没有完全占据高度。我使用的是 Mac OS X Yosemite,Chrome 42。
    • 您必须在 .content 上应用背景色而不是 .container-fluid .. 参见:codepen.io/pacMakaveli/pen/EjWXNw?editors=110 ..
    • 否则,您必须对容器应用相同的“方案”:table > table-row > table-cell 等。就像我说的,不是粉丝。您应该使用 flex 布局,这对您的情况要好得多。
    • 谢谢弗拉德,这行得通。我制作了另一个元素更少的版本,“section”变得不必要了,因为它被“.content”取代了codepen.io/anon/pen/WvpEMd?editors=110
    • 我现在在面板中有一个响应式表格,这导致整个布局扩展超过 100% 宽度 - 您知道如何解决吗? codepen.io/anon/pen/JdWrKX?editors=110
    猜你喜欢
    • 2013-04-25
    • 2019-08-11
    • 2012-04-30
    • 1970-01-01
    • 2013-09-20
    • 2011-06-03
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多