margin邊距碰撞

記得以前在看《CSS實踐手冊》的時候,看到過“邊距碰撞”這樣的例子與解釋。自己大概記得是這樣說的: 

 當兩個具有margin-top或margin-bittom的塊元素垂直排列在一個父類的塊元素裏面的時候,邊距的算法在不同的瀏覽器是算法略有不同。在IE6中,一般都是取margin比較小一個作爲兩個塊元素的margin。解決辦法就是用padding替代margin。

我以自己不會遇到這樣的情況,沒想到今天在寫頁面的時候,自己測試瀏覽器時發現Maxthon出現了這樣的問題。其它的都沒有這樣的現象,邊ie6都沒有。真鬱悶死我了。一開始自己還沒有想到是邊距碰撞的問題,自己就加上背景色來調試。調試了好久都有效果。後來纔想到邊距的問題。下面是下精簡版,好讓自己在以定頁面的時候能快速的解決類似的問題。

xhtml代碼:

  1. <div id="hotelFram"> 
  2.         <div class="hotelCate"> 
  3.             <div class="FeaturedHotels" id="InternationalHotel"> 
  4.                 <p class="p1">1這裏是垂直下來的第一個div,叫作InternationalHotel!底部有一個屬性是:margin-bottom:10px;</p> 
  5.                 <p class="p2">2</p> 
  6.                 <p class="p3">3</p> 
  7.                 <p class="p4">4</p> 
  8.                 <p class="p5">5</p> 
  9.             </div> 
  10.                       
  11.             <div class="FeaturedHotels" id="DomesticHotels"> 
  12.                 <p class="p6">6這裏是垂直下來的第二個div,叫作DomesticHotels!底部有一個屬性是:margin-bottom:10px;</p> 
  13.                 <p class="p7">7</p> 
  14.                 <p class="p8">8</p> 
  15.             </div> 
  16.         </div> 
  17.         <div class="hotelAd"> 
  18.             <p>這裏主要是廣告、雜七雜八的</p> 
  19.             <p>&nbsp;</p> 
  20.             <p>&nbsp;</p> 
  21.             <p>&nbsp;</p> 
  22.             <p>&nbsp;</p> 
  23.             <p>&nbsp;</p> 
  24.             <p>&nbsp;</p> 
  25.             <p>&nbsp;</p> 
  26.         </div> 
  27.           
  28.     </div> 
  29.       
  30.     <div id="ShareNews"> 
  31.         <div class="shareFrame floatLeft"> 
  32.             <p class="p9">9這裏是shareFram,向左浮動的!目的是讓兩個DIV能在同一列顯示</p> 
  33.             <p class="p10">10</p> 
  34.             <p class="p11">11</p> 
  35.             <p class="p12">12</p> 
  36.         </div> 
  37.         <div class="newsFrame floatRight"> 
  38.             <p class="p13">13這裏是newsFrame,向右浮動的!目的是讓兩個DIV能在同一列顯示</p> 
  39.             <p class="p14">14</p> 
  40.             <p class="p15">15</p> 
  41.             <p class="p16">16</p> 
  42.         </div> 
  43.     </div> 

 

css代碼:

 

  1. *{ margin:0pxpadding:0pxfont-size:12px; }  
  2. .floatRight { float:right; }  
  3. .floatLeft {float:left; }  
  4. #hotelFram { width:990pxmargin:10px auto 0pxoverflow:hiddenbackground:#999; }  
  5.     .hotelCate { width:770pxfloat:leftoverflow:auto; }  
  6.     .hotelAd { width:200pxfloat:rightbackground:#F9C; }  
  7.     .FeaturedHotels { float:leftwidth:770pxmargin-bottom:10pxoverflow:hidden; }  
  8. #ShareNews { width:990pxmargin:0px autooverflow:hiddenbackground:#CCC; }  
  9.     .shareFrame { width:590pxoverflow:hiddenbackground:#930; }  
  10.     .newsFrame { width:390pxoverflow:hiddenbackground:#FF0; }  
  11. #InternationalHotel { background:#0F0; }  
  12. #DomesticHotels { background:#0F0; }  
  13. .p1 { background:#90F; }  
  14. .p2 { background:#96F; }  
  15. .p3 { background:#99F; }  
  16. .p4 { background:#9CF; }  
  17. .p5 { background:#9FF; }  
  18. .p6 { background:#C0F; }  
  19. .p7 { background:#C6F; }  
  20. .p8 { background:#C9F; }  
  21. .p9 { background:#CCF; }  
  22. .p10 { background:#CFF; }  
  23. .p11 { background:#F0F; }  
  24. .p12 { background:#F6F; }  
  25. .p13 { background:#F9F; }  
  26. .p14 { background:#FCF; }  
  27. .p15 { background:#FFF; }  
  28. .p16 { background:#33C; } 

 

出現的效果大致如下:

FF效果

IE效果:

Maxthon效果:

解決辦法就是將margin-bottom:10px; 換成padding-bottom:10px;搞定!

修改之後的Maxthon效果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章