一、在上下結構的div佈局中,可能出現div覆蓋div,但是內容卻沒有出現覆蓋的現象。看看一個示例 1: <!DOCTYPE html> 2: <html> 3: <head> 4: <title>DIV與DIV覆蓋</title> 5: <meta http-equiv="Content-Type ...
一、在上下結構的div佈局中,可能出現div覆蓋div,但是內容卻沒有出現覆蓋的現象。看看一個示例
1: <!DOCTYPE html>
2: <html>
3: <head>
4: <title>DIV與DIV覆蓋</title>
5: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6: <style>
7: .boxa,.boxb{ margin:0 auto; width:400px;}
8: .boxa-l{ float:left; width:280px; height:80px; border:1px solid #F00}
9: .boxa-r{ float:right; width:100px; height:80px; border:1px solid #F00}
10: .boxb{ border:1px solid #000; height:40px; background:#999}
11: </style>
12: </head>
13: <body>
14: <div class="boxa">
15: <div class="boxa-l">內容左</div>
16: <div class="boxa-r">內容右</div>
17: </div>
18: <div class="boxb">boxb盒子里的內容</div>
19: </body>
20: </html>
一般想需要將“.boxa”和“.boxb”佈局是上下結構,從上圖發現在瀏覽器中看到效果是兩個盒子里內容是實現上下結構效果,但“.boxb”這個DIV跑到“.boxa”下麵去了,但內容沒有發生覆蓋,只有DIV發生覆蓋現象。
這 個原因是因為第一個大盒子里的子級使用了浮動float屬性而產生了浮動,所以導致“.boxa”沒有被撐開,而同級的“.boxb”盒子與 “.boxa”緊貼,而“.boxa”高度沒有,“.boxa”的子級浮動的與“.boxb”不是同級,“.boxb”盒子依然認為“.boxa”沒有高 度,所以導致“.boxb”DIV盒子就跑到“.boxa”子級DIV盒子下麵形成了覆蓋重疊現象。
問題解決辦法,測試有三種:
1、給boxa添加一個height屬性,height的值必須大於或等於baxa-l的高度
1: <div class="boxa" style="height:81px;">
2、清除浮動
在“.boxa”盒子</div>閉合前加clear樣式清除浮動。
1: //css
2: .clear{ clear:both}
3:
4: //修改boxa
5: <div class="boxa">
6: <div class="boxa-l">內容左</div>
7: <div class="boxa-r">內容右</div>
8: <div class="clear"></div>
9: </div>
或者在boxb上清除浮動
1: <div class="boxb" style="clear:both">boxb盒子里的內容</div>
3、對“.boxa”添加overflow:hidden
1: <div class="boxa" style="overflow:hidden">
2: <div class="boxa-l">內容左</div>
3: <div class="boxa-r">內容右</div>
4: </div>
二、相鄰兩個DIV重疊覆蓋
這種問題一般是由於相鄰兩個DIV一個使用浮動一個沒有使用浮動,這樣照成兩個DIV覆蓋重疊現象。
1: <!DOCTYPE html>
2: <html>
3: <head>
4: <title>DIV與DIV覆蓋</title>
5: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6: <style>
7: .bb{ float:left; border:1px solid #333; background:#FFF;height:50px;}
8: .cc{ border:1px solid #F00;background:#CCC; height:80px}
9: </style>
10: </head>
11: <body>
12: <div class="bb">我是bb里內容</div>
13: <div class="cc">我是dd里內容</div>
14: </body>
15: </html>
從 上圖或瀏覽器測試案例可以看出,“.bb”對應DIV盒子浮動覆蓋在“.cc”對應DIV盒子之上,但內容沒有覆蓋,這是因為“.bb”對應DIV盒子使 用了浮動,而同級“.cc”對應DIV盒子沒有使用浮動,一個使用浮動一個沒有導致DIV不是在同個“平面”上,但內容不會照成覆蓋現象,只有DIV形成 覆蓋現象。
解決方法:
1、都不使用浮動,去掉.bb中的float,效果如下
2、都使用浮動,給.cc添加float:left,效果如下
3、對沒有使用float浮動的DIV設置margin樣式。給.cc添加margin:100px,效果如下