【问题标题】:Set a min-height on content container在内容容器上设置最小高度
【发布时间】:2012-12-12 22:57:48
【问题描述】:

我有一个案例,我看不到解决方案。这是我的问题:

我有一个包含三个部分(页眉、部分和页脚)的页面,页脚必须始终与底部齐平。部分部分应该占据页眉和页脚之间的所有可用位置,但必须有一个根据页面不同的最小高度(我将在 CSS 上手动设置)。

当达到最小高度时,应该可以在整个页面上滚动。

这是我用来设置页眉、节和页脚的代码示例。

CSS

body {
    margin: 0
}
header, section, footer {
    left:0;
    right:0;
    overflow: hidden;
    position: absolute;
}
header {
    height: 70px;
    top: 0;
    background-color: green;
}
section {
    top: 70px;
    bottom: 195px;
    background-color: gray;
    min-height:300px;
}
article {
    overflow: hidden;
    background-color:lightyellow;
}
.news {
    position: absolute;
    bottom: -30px;
    width: 100%;
    background-color: lime;
}
footer {
    height: 195px;
    bottom: 0;
    background-color: pink;
}

HTML

<header>
    <div class="container">
        <h2>My header</h2>
    </div>
</header> 
<section>
    <article>
        <div class="news">
            <div class="row-fluid">
                <a href="#">UP</a>
            </div>
            <div class="row-fluid">
                <div class="container">
                    <div class="span6">News 1</div>
                    <div class="span6">News 2</div>
                </div>
            </div>
        </div>
    </article>
</section> 
<footer>
    <div class="container">
    My footer
</div>
</footer>​

一个 jsfiddle 可用于示例:http://jsfiddle.net/Nk6uY/

编辑

如何在我的部分上添加一个最小高度,当达到它时,我的窗口上会出现一个滚动条?

编辑 2

我将添加有关我的问题的更多信息。首先,我在 section 标签内的大部分内容都将设置为绝对值。并隐藏一些并出现在动作中(主要是javascript)。出于这个原因,我知道每个部分的最小高度是如果有人点击链接,我需要查看我的所有内容。

对于我的示例,div 新闻是隐藏的,当您单击它时,它至少需要 360 像素才能可见。但是,如果我的窗口比这个小,我的窗口上就没有滚动条,并且我的所有内容都被页脚覆盖了。

【问题讨论】:

  • 如果到达的min-height 在外部元素中,并且section 不是外部元素,您将只能在窗口滚动,因此除非您更改它,否则不会发生这种情况到外面去。
  • @MatthewBaker 感谢您的评论,我编辑了我的问题。
  • @jackJoe 抱歉,我不太明白你的意思:(

标签: html css


【解决方案1】:

您只能通过 javascript 来实现这一点 - 您需要提供页眉、节和页脚 ID,然后使用如下内容:

function ResizeBody() {
    var header = document.getElementById("Header");
    var section = document.getElementById("Section");
    var footer = document.getElementById("Footer");

    var height = GetBodyHeight() - header.offsetHeight - footer.offsetHeight - anyPaddingToTopOrBottomOfThreeMainSections;
    if (height > 0) {
         body.style.height = height + "px";
    }
}

function GetBodyHeight() {
    if (window.innerHeight > 0) {
        return window.innerHeight;
    }
    else {
        return document.documentElement.clientHeight;
    }
}

window.onresize = function () {
    ResizeBody();
};


$(document).ready(function () {
    ResizeBody();
});

更新

抱歉,我想我读错了问题 - 您希望该部分增长到屏幕大小还是手动设置它,如果内容太多有滚动条?

在这种情况下,您应该只设置该部分的高度(而不是最小高度),而不是使用溢出:隐藏使用溢出:滚动;

【讨论】:

  • 只要你有相同的部分,相同的js应该适用于每个页面
  • 我已更新我的问题以添加有关我的问题的更多信息,因为看起来它比我预期的要复杂一些。感谢您的宝贵时间。
  • 好的,我想我已经弄清楚你想要什么并相应地更改了上面的 js。如果您将 Header 的 id 放在 header 上,Section 放在 section 上等,除非高度小于 0,否则上述 js 将调整您的正文(部分)以适应屏幕。然后您需要将以下 css 添加到您的部分:取决于在浏览器(仅限较新的浏览器)上,您可以使用 overflow-x:scroll 否则只需添加 overflow:scroll
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 2012-07-08
相关资源
最近更新 更多