当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果。你知道为什么height:100%不起作用吗?

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

而跟W3C的规范,百分比的高度在设定时需要根据这个元素的父元素容器的高度。所以,如果你把一个div的高度设定为height: 50%;,而它的父元素的高度是100px,那么,这个div的高度应该是50px。

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

当设计一个页面时,你在里面放置了一个div元素,你希望它占满整个窗口高度,最自然的做法,你会给这个div添加height: 100%;的css属性。然而,如果你要是设置宽度为width: 100%;,那这个元素的宽度会立刻扩展到窗口的整个横向宽度。高度也会这样吗?

错。

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

但是高度的计算方式完全不一样。事实上,浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚动条出现)。或者你给整个页面设置一个绝对高度。否则,浏览器就会简单的让内容往下堆砌,页面的高度根本就无需考虑。

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

上面的演示例子是父元素没有设定固定高度,于是子元素的高度height: 100% 也不会起作用。你可以根据父元素的背景色来判断子元素的高度不是100%

那么,如果想让一个元素的百分比高度height: 100%;起作用,你需要给这个元素的所有父元素的高度设定一个有效值。换句话说,你需要这样做:

<html><body><div style="height: 100%;"><p>想让这个div高度为 100% 。</p></div></body>
</html>

现在你给了这个div的高度为100%,它有两个父元素<body><html>。为了让你的div的百分比高度能起作用,你必须设定<body><html>的高度。

<html style="height: 100%;"><body style="height: 100%;"><div style="height: 100%;"><p>这样这个div的高度就会100%了</p></div></body>
</html>

从这个演示中你可以看出,height: 100%;起作用了。

在使用height: 100%;时需要注意的一些事项

1、Margins 和 padding 会让你的页面出现滚动条,也许这是你不希望的。

2、如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。

转载于:https://www.cnblogs.com/guozhe/p/7483171.html

CSS 如何让 height:100%; 起作用相关推荐

  1. css如何让height:100%起作用?

    原文出处:css如何让height:100%起作用? 当你设置一个元素的高度为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大对数情况下,这样做法没有任何效果,你知道为什么height:100 ...

  2. CSS高度自适应 height:100%;

    在初次尝试高度自适应时都会遇到这样的问题: 对象的heith:100%; 并不能直接产生实际效果 为什么呢? 之所以没有效果,与浏览器的解析方式有一定关系,查看下面代码 <!DOCTYPE ht ...

  3. 在CSS中实现height:100%-200px; width:100%-200px,既长度或宽度百分百减去200px

    实例: .main{height:calc(100% - 200px)width:calc(100% - 200px) } 注: 1.减号左右必须打空格,否则不生效 2.任何长度值都可以使用calc( ...

  4. css设置height无效,CSS中设置height:100%无效的解决方案

    li 前面的缩进怎么去除? 异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 设置margin和padding为0或者为比较小的值就 ...

  5. html页面如何变成百分之百,css height 100% CSS成功设置DIV高度百分之百

    css height 100% ,使用CSS成功设置DIV高度百分之百,CSS height百分之百高度 让html中第一个div(最外层div)高度100%(height:100%)实现. 一.di ...

  6. [css] css的height:100%和height:inherit之间有什么区别呢?

    [css] css的height:100%和height:inherit之间有什么区别呢? 上周在微博上无节操吐槽了下inherit的段子,没想到回声还不少: 微博inherit无节操段子 不过inh ...

  7. html div 高度100,深入理解CSS的height:100%和height:inherit之间的使用区别

    inherit确实是个好东西,不仅节约代码,尤其与background之流打交道:而且还利于维护. 注意,如果想要继承background的图片,不能这样缩写,会显得很天真: CSS Code复制内容 ...

  8. [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?

    [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗? html是body的父 ...

  9. CSS中height:100%和height:inherit的异同

    1. height:100%和height:inherit的异同 1.1 兼容性差异 height:100% IE6+ √ height:inherit IE8+ √ 1.2 大多数情况作用是一样的 ...

最新文章

  1. 当前环境下 物联网的四大关键点
  2. java的actionevent_[java]ActionEvent事件:获取输入字符串的长度
  3. 【LeetCode从零单排】No.135Candy(双向动态规划)
  4. 转载:工程师笔记|STM32F030在低温下无法启动
  5. 基于ReentrantLock发生死锁的解决方案
  6. 【Libevent】Libevent学习笔记(一):简介和安装
  7. 【声入人心:音频新体验】
  8. python怎么读写_python怎么读写文件
  9. ubuntu虚拟机和主机互ping及secureCRT使用
  10. C++编程实现单链表的逆置
  11. python入门指南 许半仙-《猛一相亲指南》TXT全本 百度云网盘下载 by许半仙
  12. 证明背包问题是NP-complete
  13. 中国指数基金与ETF价格战简史(1)
  14. 软件测试设计测试用例案例
  15. 二级mysql刷题_计算机二级通手机版(计算机二级刷题软件)V1.1 简化版
  16. 26个思维转换,实现跨越式成长
  17. 开源免费 低代码平台开源_行动透明:免费代码营现已开源
  18. java数字音频最强教程之音频的王者之路(音频发烧友篇)
  19. 关于html中img src= 的使用!!
  20. 一个串口接2个设备_难以置信!拿地差2个月,南通2家竞品楼盘一个已经封顶,一个却仍杂草丛生!...

热门文章

  1. java nio2 iocp_基于JDK7 NIO2的高性能web服务器实践之二(转)
  2. 数据分析pandas属性实现统计分析
  3. 一段js动态操作table代码
  4. powershell 学习地址
  5. Ajax后端极简笔记
  6. centos6.4下安装python3.6以及对应的django1.11
  7. sklearn综合示例8:SVM
  8. 如何用github给开源贡献代码
  9. 在线学习在爱奇艺信息流推荐业务中的探索与实践
  10. 204. Count Primes