我想在我的网站上有一个高度的页眉,并在页面底部固定一个页脚。我对内容块高度有疑问。
我想让内容在没有太多内容文本时拉伸到整个窗口高度,并在它大于窗口高度时拉伸到内容的整个高度。
当我将内容块设置为“高度:100%”时,它会超出屏幕(忽略标题块高度)。
考虑到标题的高度,如何使它伸展到整个窗口高度?
基本示例(现在如何):
谢谢。
我想在我的网站上有一个高度的页眉,并在页面底部固定一个页脚。我对内容块高度有疑问。
我想让内容在没有太多内容文本时拉伸到整个窗口高度,并在它大于窗口高度时拉伸到内容的整个高度。
当我将内容块设置为“高度:100%”时,它会超出屏幕(忽略标题块高度)。
考虑到标题的高度,如何使它伸展到整个窗口高度?
基本示例(现在如何):
谢谢。
您遇到的问题是 CSS 中没有办法说如果这个元素是 X 高那么这个元素应该是 Y 高。(还没有)
您需要使用脚本来获取窗口的高度并将其与内容的高度进行比较。
我为此使用 jQuery,因为它很简单,并且不需要一大堆特定于浏览器的检查即可在许多浏览器上工作:
$(function(){
if($('.content').height() < $(window).height() - 225){
$('.content').css('height',($(window).height() - 225) + 'px');
}
});
这将获取 DOM 就绪时内容的高度,并将其与 Window 的高度减去页眉和页脚的高度进行比较。
如果它小于窗口高度减去页眉和页脚(实际上是您的内容区域),那么它将高度设置为该值。
那么你需要修改当前的 CSS 并移除内容的 100% 高度并在底部添加 25px 的填充为页脚腾出空间。
当然这是一个简单的例子,不处理窗口大小调整。
编辑:在花了一天的时间思考之后,我意识到让它完全响应并不难。
var initialHeight, contentHeight;
$(function(){
initialHeight = $('.content').height();
contentHeight = $(window).height() - 225;
if(initialHeight < contentHeight ){
$('.content').css('height',contentHeight + 'px');
}
$(window).resize(function(){
contentHeight = $(window).height() - 225;
if(initialHeight < contentHeight){
$('.content').css('height',contentHeight + 'px');
}else{
$('.content').css('height',initialHeight + 'px');
}
});
});
使用上面的代码,窗口和内容高度无关紧要;它总是会调整大小以适应“内容”区域。
您将“内容”区域定义为未被页脚和页眉占用的“窗口”数量。然后在第一次加载窗口时获取内容元素的高度。如果内容区域比内容元素大,则设置与内容区域匹配的新高度,如果变小,则将高度设置为与开始时相同的高度。