如何让 height:100%; 起作用

按常理,当我们用CSS的height属性定义一个元素的高度时,这个元素应该按照设定在浏览器的纵向空间里扩展相应的空间距离。例如,如果一个div元素的CSS是height: 100px;,那它应该在页面的竖向空间里占满100px的高度。

而跟W3C的规范,百分比的高度在设定时需要根据这个元素的父元素容器的高度。

那为什么 height:100%; 不起作用?

首先:

你需要理解浏览器是如何计算高度和宽度的。Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度。如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。

但是高度的计算方式完全不一样。事实上,浏览器根本就不计算内容的高度,高度为:auto;会根据内容的高度逐步往下堆叠。

因为页面的高度值为:auto,所以,当你让一个元素的高度设定为百分比高度时,那么0px*100%=0px。换句话说,父元素的高度只是一个缺省值:height: auto;。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。

所以,如果想让一个元素的百分比高度height: 100%;起作用,你需要给这个元素的所有父元素的高度设定一个有效值:

<html>

   <head>

.....

<style type="text/css">

html,body{height:100%;}

div{ height:100%;}

</style>

  </head>

 <body>

     <div></div>

 </body>

</html>


height: 100%;起作用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 12,159评论 2 19
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 5,019评论 0 1
  • 日出东方天际白, 鸟鸣枝头山谷空。 欲问景色何处好, 农家却话云雨时。
    顾海森阅读 2,507评论 2 3
  • 微凉的夜 此时的你 仍在北国的雪里 我却不在你身边 温暖 也不在 不禁想起 那篝火旁通红的脸庞...
    素颜的时光阅读 1,594评论 0 0

友情链接更多精彩内容