如何在没有垂直滚动标题的情况下使DIV 100%高度的浏览器

时间:2014-06-27 21:31:55

标签: html css html5 css3 height

左侧和右侧面板的高度均为100%,但由于 Header div占用了X个空间,因此窗口中有一些垂直滚动我想要摆脱。

如何删除垂直滚动?

JSFiddle:http://jsfiddle.net/G7unG/1/

CSS和HTML



html, body{
  height: 100%;
  margin: 0;
}
.header{
  background: #333;
  padding: 15px;
  text-align:center;
  font-size: 18px;
  font-family: sans-serif;
  color: #FFF;
}
.leftpanel, .rightpanel{
  height: 100%;
}
.leftpanel{
  float: left;
  width: 70%;
  background: #CCC;
}
.rightpanel{
  float: left;
  width: 30%;
  background: #666;
}

<div class="header">Header</div>
<div class="leftpanel">Left Panel</div>
<div class="rightpanel">Right Panel</div>
<div class="clearfix"></div>
&#13;
&#13;
&#13;

6 个答案:

答案 0 :(得分:1)

如果您想要始终保持100%高度,可以使用绝对定位。然后在左侧面板或右侧面板内使用滚动条。

示例:http://jsfiddle.net/G7unG/2/

html, body{
    height: 100%;
    margin: 0;
}
.header{
    background: #333;
    padding: 15px;
    text-align:center;
    font-size: 18px;
    font-family: sans-serif;
    color: #FFF;
    height: 22px;
}
.leftpanel, .rightpanel{
    top: 52px;
    bottom: 0;
    position: absolute;
}
.leftpanel{
    width: 70%;
    left: 0;
    background: #CCC;
}
.rightpanel{
    width: 30%;
    right: 0;
    background: #666;
}

解决方案2 - 使用固定的高度百分比:http://jsfiddle.net/G7unG/4/

html, body{
    height: 100%;
    margin: 0;
}
.header{
    background: #333;
    padding: 15px;
    text-align:center;
    font-size: 18px;
    font-family: sans-serif;
    color: #FFF;
    height: 30%;
    box-sizing: border-box;
}
.leftpanel, .rightpanel{
    height: 70%;
    float: left;
}
.leftpanel{
    width: 70%;
    left: 0;
    background: #CCC;
}
.rightpanel{
    width: 30%;
    float: right;
    background: #666;
}

答案 1 :(得分:1)

您可以使用overflow: hidden;来保护body可滚动。

根据您的评论:http://jsfiddle.net/G7unG/9/

答案 2 :(得分:1)

这是使用flexbox的现代解决方案。无论标题的高度如何,其余元素都将垂直拉伸以填充剩余空间。这是小提琴:http://jsfiddle.net/mggLY/1/

HTML:

<div id = "wrapper">
    <div class="header">Header</div>
    <div>
        <div class="leftpanel">Left Panel</div>
        <div class="rightpanel">Right Panel</div>
    </div>
</div>

CSS:

* {
    margin: 0;
    padding: 0;
    border: 0;
}

html, body {
    height: 100%;
}

.header{
    background: #333;
    padding: 15px;
    text-align:center;
    font-size: 18px;
    font-family: sans-serif;
    color: #fff;
}

.leftpanel{
    background: #CCC;
}

.rightpanel{
    background: #666;
}

#wrapper {
    height: 100%;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    outline: 1px solid red;
}

#wrapper > .header {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
}

#wrapper > .header + div {
    -webkit-flex: 1 1 auto;
    flex: 1 1 auto;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row;
    flex-direction: row;
}

#wrapper > .header + div > div:first-of-type {
    -webkit-flex: 7 0 0;
    flex: 7 0 0;
}

#wrapper > .header + div > div:last-of-type {
    -webkit-flex: 3 0 0;
    flex: 3 0 0;
}

答案 3 :(得分:0)

像这样:http://jsfiddle.net/G7unG/3/

html, body{
    height: 100%;
    margin: 0;
    overflow:hidden;
}

答案 4 :(得分:0)

您可以使用“faux columns”类型的结构 - 将列的背景颜色添加为实际列后面的“固定”元素(它们不会随页面滚动)。

<div id="left_faux"></div>
<div id="right_faux"></div>
div#left_faux {
    position: fixed;
    top:0;
    left:0;
    right:30%;
    bottom:0;
    background-color:#CCC;
}
div#right_faux {
    position: fixed;
    top:0;
    left:70%;
    right:0;
    bottom:0;
    background-color:#666; 
}

.leftpanel{
    float: left;
    width: 70%;
}
.rightpanel{
    float: left;
    width: 30%;
}

出于演示目的,这个快速示例可能过于冗长。我确信你可以简化CSS,因此没有那么多冗余定义。

WORKING EXAMPLE

答案 5 :(得分:0)

使用视口。浏览器现在支持给页面高度百分比。如果您有一个标题占用空间,请将100降至80。

div {
    height:100vh;
}