ie下雙倍margin的處理方法

要實現下圖中的樣式,在火狐等瀏覽器下是很好實現的


但在ie中有雙倍margin的問題,處理方法如下

1、在需要margin的div外層包圍一層div

2、內層div爲ie設置margin,div的display屬性inline

3、在外層div爲火狐設置margin

4、在外層div清掉上一個外層div的浮動

需要使用hack技術爲瀏覽器單獨賦值

html代碼如下:

[html] view plaincopy
  1. <div id="regLayer">  
  2.    <div>用div包裹起來解決ie雙倍問題  
  3.     <div>  
  4.         <label>username</label>  
  5.         <input id="regLoginName">  
  6.         <span id="verifyRegLoginName">*</span>  
  7.     </div>  
  8.    </div>  
  9.    <div class="clearFloat">下面的div要清掉上面的浮動  
  10.         <div>  
  11.             <label>password</label>  
  12.         <input type="password" id="regPassword">  
  13.         <span id="verifyRegPassword">*</span>  
  14.     </div>  
  15.     </div>  
  16.     <div class="clearFloat">  
  17.         <div>  
  18.             <label>repassword</label>  
  19.             <input id="regCPassword" type="password">  
  20.             <span id="verifyRegCPassword">*</span>  
  21.         </div>  
  22.     </div>  
  23. </div>  

css代碼如下:

  1. #regLayer div{外層div  
  2.     margin:10px 0 0 5px;標準瀏覽器  
  3.     margin0px\9;ie瀏覽器  
  4. }  
  5. #regLayer div div{內層div  
  6.     margin:10px 0 0 5px\9;ie瀏覽器  
  7.     height24px;  
  8.     padding0px;  
  9.     displayinline;爲ie設置inline  
  10. }  
  11.   
  12. #regLayer div div label{  
  13.     text-alignright;  
  14.     color#5b8c05;  
  15.     width200px;  
  16.     line-height20px\9;ie下需要設置行高居中  
  17. }  
  18.   
  19. #regLayer div  div label,#routeQuery div  div input{  
  20.     margin2px 10px 0 10px;  
  21.     floatleft;  
  22. }  
  23.   
  24. #regLayer div  div input{  
  25.     width200px;  
  26.     height20px;  
  27. }  


(1)、div加上display:inline;即可解決你的煩惱。

(2)把margin改成padding,也可以達到同樣的效果。

(3)但在margin_top和margin_bottom設置的情況下,在IE8和其他某些瀏覽器上會出現雙倍距離。這個問題是要你在父容器中添加“overflow:hidden;”即可解決。

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章