依據(jù)以上解釋, 我們應該得到如下效果(Fig. 3):
即ID1的margin-top/bottom=ab=ef=10px;
ID2的margin-top/bottom=bc=de=30px;
但用瀏覽器打開html文件, 卻得到 Example4 的效果, 如下圖(Fig. 4):
即ab=cd=30px, ID1的margin-top/bottom=10px被折疊了, 而且ID1應有的margin黑色背景也一同被折疊消失了.
為什么會折疊: 造成以上現(xiàn)象的原因是, 我們在css中并沒有聲明id為ID1的元素div的height(高), 因此它的高便被設為auto(自動)了. 一旦其值被設為auto, 那么瀏覽器就會認為它的高為子元素ID2的border-top到border-bottom之間的距離, 即Fig. 4中bc的長度, 所以子元素ID2的margin-top/bottom(30px)就伸出到了父元素ID1之外, 出現(xiàn)了Fig. 4中ab與cd之間的空白區(qū)域. 因此父元素ID1的margin-top/bottom因子元素的”紅杏出墻”而被折疊消失了.
如何解決折疊問題: 可能大家最初想到的辦法就是根據(jù)折疊發(fā)生的原因—auto, 來解決問題. 但是, 在實際操作中, 某些元素如div, h1, p等, 我們是不可能預先知道它的高是多少的, 因此在css文件中是不能常規(guī)通過聲明元素的高來解決折疊問題.
我們需要在css文件中加入如下代碼(紅色部分):
#ID1 { background-color: #333; color: #FFF; margin-top: 10px; margin-bottom: 10px; padding-top:1px; padding-bottom:1px; }
或是:
#ID1 { background-color: #333; color: #FFF; margin-top: 10px; margin-bottom: 10px; border-top:1px solid #333; border-bottom:1px solid #333; }
通過增加以上代碼, 便可使瀏覽器重新計算ID1的高, 使其為子元素ID2的margin-top/bottom外緣(outer top/bottom)之間的距離, 即Fig. 3中be的距離.
看得是不是有點迷糊, 折疊問題難度比較大, 它也曾是困擾我多時的難題, 加之本人的敘述說明能力不足, 更加大了大家學習的難度, 在此Jorux深表歉意.
為檢驗大家學習折疊問題的效果, 給讀者留下一個問題:
html文件代碼為(請將css地址改為你的css文件存放地址):
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html> <head> <title>My first homepage</title> <link rel=”stylesheet” href=”….css” type=”text/css” media=”screen” /> </head> <body> <h1 id=”title”> A title</h1> <div id=”content”> Some text here </div> </body> </html>
外聯(lián)css文件代碼為:
*{ padding:0; margin:0; } body { font: 14px/1.5 Georgia, serif; } h1#title { float: right; width: 50%; font: 14px/1.5 Georgia, serif; margin-top: 0; background-color: #F00; color: #fff; } div#content { background-color: #333; color: #FFF; margin-top: 30px; border: 1px solid #333; }
請將此代碼存為css文件, 并與以上html文件關聯(lián), 得到如 Example5 的效果, 請分別用IE與Firefox瀏覽, 效果不盡相同, IE下的效果是我們想要的, 但用Firefox瀏覽卻發(fā)現(xiàn)元素h1嵌入到元素div中, 你能解決這個Firefox不能正常顯示的問題嗎? 如果可以, 能和剛剛學過的折疊現(xiàn)象聯(lián)系起來嗎? 請在留言給出你的答案! (Jorux的解釋會在留言中或是下篇文章中給出) [END]
注: 該問題有一定難度, 請讀者量力而行!
至此, 《If you love css …》的屬性篇全部結束, 下篇將進入《布局篇》.
本文鏈接:http://www.95time.cn/tech/web/2008/6026.asp
出處:Jorux Notebook
責任編輯:moby
上一頁 css基礎教程屬性篇之四 [2] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|