包裹在pageWrapper
容器中,我在列中有3个div。第一个(标题)和最后一个(navWrapper)具有固定的高度。我需要中间的一个(contentWrapper
)来拉伸高度,直到父div pageWrapper达到最大高度(根据浏览器的视口)。
我绘制了这个问题的架构。
这是我当前解决方案的小提琴。 http://jsfiddle.net/xp6tG/
这里是代码
CSS和HTML
html, body{
height: 100%;
}
body{
background-color: #E3E3E3;
}
#pageWrapper{
margin: 0 auto;
position: relative;
width: 600px;
height: 100%;
}
header{
display:block;
width: 100%;
height: 100px;
background: yellow;
}
#contentWrapper{
width: 100%;
height: 100%;
background: blue;
}
#navWrapper{
width: 100%;
height: 100px;
background: green;
}
<div id="pageWrapper">
<header>
Header
</header>
<div id="contentWrapper">
Content
</div>
<div id="navWrapper">
Nav
</div>
</div>
它几乎正常工作,但它导致高度太高,导致出现垂直滚动条。
答案 0 :(得分:9)
这是一种方法。
应用以下 CSS :
html, body{ height: 100%; margin: 0;}
body{ background-color: #e3e3e3;}
#pagewrapper{
margin: 0 auto;
position: relative;
width: 600px;
height: 100%;
}
header{
display:block;
width: 100%;
height: 100px;
background: yellow;
}
#contentwrapper{
width: 100%;
position: absolute;
top: 100px;
bottom: 100px;
left: 0;
background: blue;
}
#navwrapper{
width: 100%;
position: absolute;
height: 100px;
bottom: 0px;
left: 0;
background: green;
}
由于您为header
和#navwrapper
块元素指定了高度,
您可以使用相对于父#pagewrapper
块的绝对定位
设置#contentwrapper
的底部和顶部偏移以及底部偏移
#navwrapper
。
如果您看到滚动条,则可能需要为margin: 0
和/或html
标记设置body
。
答案 1 :(得分:2)
您可以尝试在调用CSS后在您的部分中添加此脚本。它会找到你的头/脚元素的高度,并使中心div的高度填满屏幕。这很好,因为如果您决定使页眉/页脚元素高度动态,则此脚本仍然有效。
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var totalHeight = $('#pageWrapper').height();
totalHeight -= $('header').height();
totalHeight -= $('#navWrapper').height();
// Remove an extra 20px for good measure
totalHeight -= 10;
$('#contentWrapper').css('height', 'auto');
$('#contentWrapper').css('min-height', totalHeight);
});
</script>