Make body have 100% of the browser height

后端 未结 21 1362
离开以前
离开以前 2020-11-22 00:26

I want to make body have 100% of the browser height. Can I do that using CSS?

I tried setting height: 100%, but it doesn\'t work.

I want to set

21条回答
  •  难免孤独
    2020-11-22 00:33

    After testing various scenarios, I believe this is the best solution:

    html {
        width: 100%;
        height: 100%;
        display: table;
    }
    
    body {
        width: 100%;
        display: table-cell;
    }
    
    html, body {
        margin: 0px;
        padding: 0px;
    }
    

    It is dynamic in that the html and the body elements will expand automatically if their contents overflow. I tested this in the latest version of Firefox, Chrome, and IE 11.

    See the full fiddle here (for you table haters out there, you can always change it to use a div):

    https://jsfiddle.net/71yp4rh1/9/


    With that being said, there are several issues with the answers posted here.

    html, body {
        height: 100%;
    }
    

    Using the above CSS will cause the html and the body element to NOT automatically expand if their contents overflow as shown here:

    https://jsfiddle.net/9vyy620m/4/

    As you scroll, notice the repeating background? This is happening because the body element's height has NOT increased due to its child table overflowing. Why doesn't it expand like any other block element? I'm not sure. I think browsers handle this incorrectly.

    html {
        height: 100%;
    }
    
    body {
        min-height: 100%;
    }
    

    Setting a min-height of 100% on the body as shown above causes other problems. If you do this, you cannot specify that a child div or table take up a percentage height as shown here:

    https://jsfiddle.net/aq74v2v7/4/

    Hope this helps someone. I think browsers are handling this incorrectly. I would expect the body's height to automatically adjust growing larger if its children overflow. However, that doesn't seem to happen when you use 100% height and 100% width.

提交回复
热议问题