怎麼解決div覆蓋內容卻沒覆蓋的問題?

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   使用   ar   

一、在上下結構的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,效果如下

 

來源:http://www.ido321.com/669.html


怎麼解決div覆蓋內容卻沒覆蓋的問題?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.