CSS深入研究:偷窺beautyGirl身材 – height

來源:互聯網
上載者:User

這位妹紙,你在偷窺什嗎?你不知道螳螂捕蟬,黃雀在後嗎?我是一隻善良犀利的黃雀,不敢獨自偷窺,願與大家一同偷窺,當然,此次偷窺為了不然我們黃雀家族丟臉,我們必須偷窺出境界,偷窺出格調。

當我在偷窺這位beautyGirl的時候,我想到了一個嚴肅的問題:她父母是誰?

各位請把你們大跌的眼鏡扶正,我不是要去見這位beautyGirl的家長,然後提親,咳... 我在想的是,她父母的height如何,這將直接影響到我的下一步計劃,為什麼這麼說呢,因為父母的height將會影響未來beautyGirl的height。

一、父元素對height的影響

height用px作為單位,大家最熟悉不了,px為單位基本上就給元素板上DingTalk了。那麼,我們來探索一下height:auto 和 height:100%在不同情況下的不同表現。

讓我們來看一個height:100%失效demo:

<style type="text/css"><br /> .parent{}<br /> .beautyGirl{ height: 100%; background: #fcf59b;}<br /> </style><br /> <div class="parent"><br /> <div class="beautyGirl"><br /> <img src="http://images.cnitblog.com/blog/187508/201212/27220727-de39774232d64f509a356835481d82fd.jpg" alt="" /><br /> </div><br /> </div><br /> 運行

 

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[頂]隨便你。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.