CSS深入研究:偷窥beautyGirl身材 - height

这位妹纸,你在偷窥什么?你不知道螳螂捕蝉,黄雀在后吗?我是一只善良犀利的黄雀,不敢独自偷窥,愿与大家一同偷窥,当然,此次偷窥为了不然我们黄雀家族丢脸,我们必须偷窥出境界,偷窥出格调。

当我在偷窥这位beautyGirl的时候,我想到了一个严肃的问题:她父母是谁?

各位请把你们大跌的眼镜扶正,我不是要去见这位beautyGirl的家长,然后提亲,咳... 我在想的是,她父母的height如何,这将直接影响到我的下一步计划,为什么这么说呢,因为父母的height将会影响未来beautyGirl的height。

一、父元素对height的影响

height用px作为单位,大家最熟悉不了,px为单位基本上就给元素板上钉钉了。那么,我们来探索一下height:auto 和 height:100%在不同情况下的不同表现。

让我们来看一个height:100%失效demo:

 

demo中明明设置了beautyGirl的高度为100%,为什么不起作用呢?经过一番逻辑推理,深思熟虑,我明白了原来是未设置父元素的高度导致的。所以当我们堆砌页面的时候,有时候碰到height:100%不起作用了,很可能就是因为这个原因引起的。为了从根本上解决这个问题。我们给祖先元素加上height:100%.修改后CSS如下:

<style type="text/css">
            html,body{height:100%; margin:0;}
            .parent{height: 100%;}
            .beautyGirl{ height: 100%; background: #fcf59b;}
</style>

再一看demo:

哇,beautyGirl高挑了身姿,挺拔了...咳,经过这一分析,童鞋们应该明白我为什么要了解beatyGirl的父母了吧,基因的好坏能直接影响妹纸的成长啊。

下面我们来探讨偷窥角度的问题,因为偷窥的角度直接影响到了偷窥的质量,俗话说从门缝里看人会把人看扁,这回我们来个诡异的角度,怎么看?上,不是,下,太邪恶了吧。这回我们来个文艺的角度,脱离地心引力的诡异角度来看这位beautyGirl吧,漂浮吧,beautyGirl!

二、float与绝对定位(position:absolute)对父元素height的影响

 修改CSS如下:

<style type="text/css">
            html,body{height:100%; margin:0;}
            .parent{background: #fcf59b;}
            .beautyGirl{ float: left; }
</style>

运行demo:

果然,那.parent元素的黄色没有出现。这是为什么呢?

当元素beautyGirl 浮动或者是绝对定位的时候,就造成了父元素的高度塌陷。然后,父元素的height就为0了,至于,为什么会发生这种事情,请移步后花园偷窥详情。移步后花园后,你可以Ctrl+F 输入高度塌陷,来快速定位这一问题,如果没看过此作品,强烈建议您观赏。

不过浮动和绝对定位对beautyGirl的影响是不同的。如果说浮动是叛逆,那么绝对定位就是大逆不道啊。请看demo:

float CSS:

<style type="text/css">
            html,body{height:100%; margin:0;}
            .parent{ width:400px; height:300px; border:1px solid #f00;}
            .beautyGirl{ float: left; width:100%; height: 100%; background: #fcf59b;}
</style>

效果图:

绝对定位CSS:

<style type="text/css">
            html,body{height:100%; margin:0;}
            .parent{ width:400px; height:300px; border:1px solid #f00;}
            .beautyGirl{ position: absolute; width:100%; height: 100%; background: #fcf59b;}
</style>

效果图:

从图中可以看出,浮动的元素设置 height和width为100%后,子元素填满了父元素的空间,而绝对定位元素却完全不受parent元素的控制,子元素将会以窗口大小为参照,来进行计算height和width,当然有一种情况例外,那就是存在“干爹”元素的时候。子元素只受绝对或者相对定位的“干爹”元素控制。

可恶的干爹毒害了多少beautyGirl啊,又间接残害了多少良好男青年啊,下面我们来看一个罩杯问题,至于为什么是这个名字,请广大好青年自思。

三、line-height对height的影响

这个问题相对简单,就一句话,IE6下,当line-height大于height时,元素的实际高度等于line-height。在很多情况下,这个因素就是高度超出,导致边框不对齐的原因。overflow:hidden有时候能帮上忙。其他浏览器则由height来决定元素的高度。

既然决定对这个beautyGirl有一些想法,那么我们还需要了解一下beautyGirl的姊妹。嘿嘿,也许姐姐更合适也说不定哦。

四、min-height和max-height

说到这两个属性,就又要和IE6纠缠不清了。其它浏览器下,没什么好说的,不过也许,也不是你想的那样哦。下面提几个问题

1、.beautyGirl{min-height:30px; height:60px; max-height:90px;}  //beautyGirl1 60px;beautyGirl2 60px;

2、.beautyGirl{min-height:60px; height:30px; max-height:90px;}  //beautyGirl1 60px;beautyGirl2 60px;

3、.beautyGirl{min-height:60px; height:120px; max-height:90px;}  //beautyGirl1 90px;beautyGirl2 90px;

4、.beautyGirl{min-height:60px; max-height:90px;}  //beautyGirl1 60px;beautyGirl2 <90px;达到max-height效果

1、2、3、4的实际height到底是多少呢?同学们可以亲测一下。懒人助手:用鼠标选中问题部分,答案就在后面。

最后献上IE6下min-height和max-height的模拟代码:

    .min-height{ min-height:60px; _height:60px}
    .max-height{ max-height:90px; _height: expression(this.offsetHeight> 90 ? 90 : true); overflow: hidden;}

 结束语

偷窥需勇气,码字不容易,abcd敲对敲错又看运气,如果你觉得还可以,[推荐]or[顶]随便你。

posted @ 2012-12-29 01:12  暴风烈酒  阅读(2943)  评论(7编辑  收藏  举报