2012-12-12 94 views
0

我遇到了一個我沒有看到解決方案的情況。這是我的問題:在內容容器上設置最小高度

我有一個頁面有三個部分(頁眉,部分和頁腳)頁腳必須沖洗到底部始終。部分部分應該在頁眉和頁腳之間佔據所有可用位置,但必須具有根據頁面不同的最小高度(我將手動設置爲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

我將添加我的問題更多的信息。首先,部分標籤內的大部分內容都將設置爲絕對。並隱藏一些並出現在行動(主要是JavaScript)。出於這個原因,我知道每個部分都是最小高度,如果有人點擊鏈接,我需要查看我的所有內容。

對於我的例子,div新聞是隱藏的,當你點擊它時,至少需要360px才能看到。但是如果我的窗戶比這更小,我的窗戶上沒有卷軸,我的所有內容都被頁腳覆蓋。

+2

你的問題不清楚。 –

+0

如果到達的'min-height'在外部元素中,'section'不是外部元素,那麼只有在窗口上滾動時纔會出現滾動,所以除非將其更改爲外部元素,否則不會發生。 – jackJoe

+0

@MatthewBaker感謝您的評論,我編輯了我的問題。 – yvan

回答

0

只能通過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(); 
}); 

UPDATE

對不起,我想我閱讀錯誤的問題 - 你想要的部分增長到屏幕大小,或者你手動去設置它,如果有太多的內容有一個滾動條?

在這種情況下,您應該只設置節的高度(而不是最小高度),而不是溢出:hidden use overflow:scroll;

+0

只要你有相同的部分,同樣的js應該適用於每一頁 – Pete

+0

我已經更新了我的問題以添加更多關於我的問題的信息,因爲 – yvan

+0

好吧,我想我已經弄清楚了你想要什麼,並相應地改變了上面的js,如果你在頁眉上添加了標題的id,那麼Section上面的js會調整你的身體(部分)以適應屏幕,除非高度小於0.然後你需要添加下面的CSS到你的部分:根據瀏覽器(只有更新的瀏覽器),你可以使用overflow-x :否則滾動只需添加溢出:滾動 – Pete