Annoying的height:100%

Double scroll bar

這幾天有個非常annoying的問題,一個網(wǎng)頁布局亂套了。原因是一個slightly problem height:100%

這個height:100%寫在了bodyhtmltag上面。在他們的第一個直系子孫Div上面也有一個100%,借此達到了double scroll bar的效果。代碼模擬情況如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set DIV Height to 100% Using CSS</title>
<style type="text/css">
    html, body {
        height: 100%;
        margin: 0px;
    }
    .container {
        height: 100%;
        border:5px solid #68c;
        overflow:auto //Put overflow auto, there will be a double scroll bar

    .sub_container {
        height: 2600px;  //最里面的子元素高度明顯大于 viewport height
        border: 4px solid #f0c;
    }
</style>
</head>
<body>
    <div class="container">The height of this DIV element is equal to the  
     100% height of its parent element's height.
        <div class="sub_container">
            here is a test
        </div>
    </div>
</body>
</html>                                     

子元素固定高度超過height 100%

因為是single page application,幾個不同的頁面實際render時共享一個父容器,而另一個頁面又是需要子元素固定高度的,1200px,當然這并不是問題,問題是,頁面上有個footer是由template來提供的(django 和 react 的結(jié)合),這個footer在我所render的父容器外面,自然,緊鄰著.container。于是它就神一般的飄到了子div(.sub_container)的下面。

    html, body {
        height: 100%;
        margin: 0px;
    }
    .container {
        height: 90%;
        border:5px solid #68c;

    .sub_container {
        height: 2600px;  // 最里面的子元素高度明顯大于 viewport height,   
                         // 內(nèi)容高度超過父容器
        border: 4px solid #f0c;
    }

解決方法:

  1. 去掉最外面body的100%,但會影響到另外的頁面,需要double scroll bar的那個頁面變超丑。
  2. 也加一個auto,向double scroll bar妥協(xié)。

為啥設了height百分比,但是它不生效

經(jīng)常看到有人問,為啥我設立height百分比,但是它還是不生效呢,先要說,你要的效果是個啥效果。比如這個code,當我把最外層的body上的height:100%去掉,驚奇的發(fā)現(xiàn).containerheight: 50%;不能為非作歹了,它的高度完全和子元素的高度一致。

    html, body {
        margin: 0px;
    }
    .container {
        height: 50%; // 沒用
        border:5px solid #68c;

    .sub_container {
        height: 2600px;  // 最里面的子元素高度明顯大于 viewport height,   
                         // 內(nèi)容高度超過父容器,.container被撐大到2600px
        border: 4px solid #f0c;
    }
    html, body {
        margin: 0px;
    }
    .container {
        height: 50%; // 沒用
        border:5px solid #68c;

    .sub_container {
        height: 60px;    // 內(nèi)容高度明顯小于50% viewport, 
                         // .container高度也只有60px
        border: 4px solid #f0c;
    }

這是因為在使用height百分比的時候,它本身就是一個相對的量,首先需要自己的老爸有一個具體的高度,否則只能看子敬父,兒子多大它多大。

教訓

據(jù)說這個100%在不同的瀏覽器上解釋也不同,我還沒有考證過,另外,大家合作布局的時候,注意下這個坑爹貨。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • 請參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,178評論 2 19
  • 1、垂直對齊 如果你用CSS,則你會有困惑:我該怎么垂直對齊容器中的元素?現(xiàn)在,利用CSS3的Transform,...
    kiddings閱讀 3,195評論 0 11
  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱: 工作地點 崗位名...
    lilyping閱讀 1,891評論 0 1
  • 這部電視劇大火,我也跟著看了。劇中猴亮平代表正義與同是政法大學畢業(yè)的祁同偉形成鮮明對比。 回看祁的成...
    愛左看右閱讀 237評論 0 2