设置HTML页面最小高度为窗口高度的方法

jopen 9年前

先看html和效果图

<!DOCTYPE html>    <html>     <head>      <style>       body,p{        margin:0;       }       .header,.footer{        background:#000;        height:60px;       }              /*兼容ie8       html,body{        height:100%;       }       */       .auto-height{        /*兼容ie8         min-height:100%;        */        min-height:100vh;        margin-top:-60px;        margin-bottom:-60px;        /*设置内边距方式一*/        box-sizing:border-box;        padding-top:60px;        padding-bottom:60px;       }       /*设置内边距方式二       .auto-height>div{        padding-top:60px;        padding-botom:60px;       }       */      </style>     </head>     <body>      <div class="header">      </div>      <div class="main auto-height" id="main-con">       <div>        <p>设置页面最小高度为窗口高度的方法</p>       </div>      </div>      <div class="footer">      </div>      <!-- script>       var mainElem=document.getElementById("main-con");       document.onreadystatechange=function(){        if(document.readyState=="complete"){           mainElem.style.minHeight=(document.documentElement.clientHeight-120)+"px";             window.onresize=function(){          mainElem.style.minHeight=(document.documentElement.clientHeight-120)+"px";         };        }       };         </script -->     </body>    </html>

效果图:

这里有两种方法:

第一种是使用css实现:

1.  给main元素添加样式:

    min-height:100vh;        margin-top:-60px;//数值等于页面头部高度        margin-bottom:-60px;//数值等于页面尾部高度

margin的高度是页面头部和尾部的高度。

2.  为了让main元素里的所有内容都显示出来,要增加相应的内边距,这里有两种方法:

    box-sizing:border-box;//将main元素的宽高计算方式更改为包含内边距和边框        padding-top:60px;//数值等于页面头部高度        padding-botom:60px;//数值等于页面尾部高度

或设置其子元素的内边距:

   .auto-height>div{        padding-top:60px;//数值等于页面头部高度        padding-botom:60px;//数值等于页面尾部高度       }

3.由于ie8不支持vh单位,所以如果需要兼容ie8的话,可以将html和body的高度都设为100%,再设置main元素的最小高度为100%(min-height:100%),其他的设置不变。

   html,body{        height:100%;       }

第二种是使用JavaScript来实现:

使用JavaScript来动态设置main元素的最小高度即可,这里提供其中一种实现方式

   var mainElem=document.getElementById("main-con");//获得main元素       document.onreadystatechange=function(){        if(document.readyState=="complete"){//页面加载完成时执行         mainElem.style.minHeight=(document.documentElement.clientHeight-120)+"px";//初始化最小高度         window.onresize=function(){//窗口大小改变时改变main元素的最小高度          mainElem.style.minHeight=(document.documentElement.clientHeight-120)+"px";         };        }       };

最小高度的值=窗口的高度-页面头部高度-页面尾部高度。

来自: http://my.oschina.net/hwxn/blog/598645