关于height:100%两三事

对于CSS的height:100%,顾名思义,该元素的高度自动填充为其父元素的高度。但该样式有时候会不起作用,Mark down 一下。><

首先,看一下以下CSS代码:

1 div {
2     height: 100%;
3 }

HTML代码:

1 <!doctype html>
2 <html>
3 <head></head>
4 <body>
5     <p>我的名字叫做甲基苯醌</p>
6     <div></div>
7 </body>
8 </html>

毫无疑问,div的height: 100%完全不起作用(亏得我当时天真地以为div的高度会和p的高度一样,因为body的高度被p撑开了,然后100%就起作用了,呵呵,too young too simple),然后现在回想起来,height:100%不起作用,完全是符合逻辑的。因为body元素在没用设定height的情况下,高度是自适应的,如果div的height:100%起作用的话,那么body的高度必定会被撑开,这时候body的高度 === div的高度 * 2,而div的样式是height:100%,完全不符合我国的科学发展观!!!

要解决这个问题也很简单,添加如下CSS代码:

1 htm, body {
2     height: 100%;
3 }

以此类推,在元素不是绝对,固定的情况下,要想height:100%起作用,那么该元素的父元素的height一定要设置。

那么,现在的问题来了,为什么父元素设置了height,其子元素的height: 100%就会起作用呢?

很明显,父元素设置了高度后,其高度为一个固定值,就算某个子元素设置了height:100%,其高度也不会增加,而且,浏览器对于元素的overflow的默认值是visible,所以就起作用了。

接着,当子元素设置为绝对定位,即使父元素没有设定高度,该子元素的height:100%也会起作用,因为绝对定位的子元素不会撑开父元素的高度和宽度,符合科学发展观!!!!

做过响应式布局的都知道,我想某个div的高度随屏幕的大小而变化,但我又想让这个div有着一些margin或padding的效果,div绝对定位后,设置height:100%,在设置margin或padding就会有一些乱七八糟的问题。解决方案可用以下代码实现。。。。

1 div {
2     position: absolute;
3     height: auto;
4     left: 0;
5     top: 0;
6     right: 0;
7     bottom: 0;
8     margin: 20px;
9 }

关于height:100%两三事

时间: 2024-11-04 15:06:55

关于height:100%两三事的相关文章

如何让 height:100%; 起作用

当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果.你知道为什么height:100%不起作用吗? 按常理,当我们用CSS的height属性定义一个元素的高度时,这个元素应该按照设定在浏览器的纵向空间里扩展相应的空间距离.例如,如果一个div元素的CSS是height: 100px;,那它应该在页面的竖向空间里占满100px的高度. 而跟W3C的规范,百分比的高度在设定时需要根据这个元素的父元素容器的高度.所以,

table height 100%问题

背景:做项目时候,为了省事用table布局,table高度设置成100%,不起作用 原因: 有关浏览器工作模式大致可分为三种:Standarded Mode, Almost Standarded Mode及Quirks Mode...... 一个对象高度是否可以使用百分比显示,取决于对象的父级对象,Table在body之中,因此它的父级是body,而浏览器在标准模式下,是没有给body一个高度属性的,因此当设置height:100%;时,不会产生任何效果(内容根据高度自适应),而当给body设置

关于 iframe 在ie11 height:100% 无效的巨坑

好的,今天公司分配了个解决ie中的bug的任务,其中,有一个就是iframe 的高度 100% 没有生效的问题: 一开始,由于我真的没有怎么去了解过iframe这个货,所以,网上各种搜索一大堆关于这货的资料,到最后,发现并没有卵用,没有找到问题的重点: 甚至搜索到请求头要设置X-Frame-Options这个参数的点上去了,顺带说说,X-Frame-Options这个参数: 有时候为了防止网页被别人的网站iFrame,我们可以通过在服务器设置HTTP头部中的X-Frame-Options信息使用

flex引起height:100%失效

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> <style> * { margin: 0; padding: 0; b

div设置高度height:100%实际却为0的解决

<html> <head> <title>无题</title> </head> <body> <div id="div" style="width:100%;height:100%>     我是DIV里的内容 </div> </body> </html> 如上,当设置div的height为100%时,打开页面是一片空白,点审查元素进去看,发现div的高度为

IE下iframe height=&quot;100%&quot;无效的解决方法

IE7下iframe height="100%"无效的解决方法就是css如下写法: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml&q

html body div height: 100%;

最近做了测试 html{ height: 100%;//全部内容高度,包括滚动出现的内容 background-color:#000;} body{height: 100%;//只一页屏幕,用作滚动的标准,不包括滚动出现的内容} body  div{height: 100%;//继承body高度,也只是一页屏幕,不包括滚动出现的内容} 想让div高度自适应全部内容(即滚动的内容,那么就不要设置高度为100%,使用默认就行)

height:100%不起作用(无效),div全屏

当父容器是body时,height:100%不起作用(无效),解决办法:在css代码段中添加 html, body{ margin:0; height:100%; } 实现div全屏的时候需要上面那段代码. 下面给个div全屏的示例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>全屏div</title> <style> htm

height:100%和height:auto的区别

一直不明白height:100%和height:auto的区别,最近在制作前端页面时都用了height:100%;overflow:hidden; ,可是有些浏览器出现莫名的奇妙的问题,但换成height:auto就好了,百度过这个问题,却一直没有细看. 今天又浮现了同样的问题,百度细看和群里的朋友指点,终于明白其中的道理,记录一下. height:auto,是指根据块内内容自动调节高度.height:100%,是指其相对父块高度而定义的高度,也就是按照离它最近且有定义高度的父层的高度来定义高度