css margin屬性相容性分析

來源:互聯網
上載者:User

margin,是透明的,在它設定的值的範圍內,父元素的背景色或背景圖片均不受影響,能夠完整的呈現給使用者看到。margin屬性通過單獨的屬性對其上、右、下、左依次進行賦值,我們常見的有margin:10px; OR margin:10px 20px; OR margin:10px 20px 10px 20px;但是你知道:margin:10px 15px 3px;什麼意思嗎?你以為它的表達意思是:margin:10px 15px 3px 0px;嗎??那我來告訴你,錯誤:它的表達意思是margin:10px 15px 3px 15x;呵呵!great。這個才是正確的。在實際應用中,或者閱讀別人代碼的時候不要理解錯誤或者,沒有看到過這個,就隨便猜測作者的想法。

注釋:允許使用負值。

例子 1
margin:10px 5px 15px 20px;上外邊距是 10px
右外邊距是 5px
下外邊距是 15px
左外邊距是 20px
例子 2
margin:10px 5px 15px;上外邊距是 10px
右外邊距和左外邊距是 5px
下外邊距是 15px
例子 3
margin:10px 5px;上外邊距和下外邊距是 10px
右外邊距和左外邊距是 5px


 margin垂直外邊距不相容標準?

實際工作中,垂直外邊距合并問題常見於第一個子項目的margin-top會頂開父元素與父元素相鄰元素的間距,而且只在標準瀏覽器下 (FirfFox、Chrome、Opera、Sarfi)產生問題,IE下反而表現良好。例子可以查看下面代碼(IE下表現“正常”,標準瀏覽器下查看出現“bug”)有代碼有真相:

 

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>垂直外邊距合并</title>
 <style>
 .top{width:160px; height:50px; background:#ccf;}
 .middle{width:160px; background:#cfc;}
 .middle .firstChild{margin-top:20px;}
 </style>
 </head>
 
 <body>
 <div class="top"></div>
 <div class="middle">
   <div class="firstChild">我其實只是想和我的父元素隔開點距離。</div>
   <div class="secondChild"></div>
 </div>
 </body>
 </html>

你來運行一下是不是感覺,這個在IE中顯示正常?而在其他對css教程2高度相容的firefox下顯示異常??我來告訴你,這是因為IEIE的hasLayout渲染導致了這個“表現良好”的外觀。而其他標準瀏覽器則會表現出“有問題”的外觀。如果按照css規範來說,IE的表現是錯誤的,而FirfFox、Chrome、Opera、Sarfi等主流瀏覽器則解析的符合css規範。

    舉個例子來說:父元素的第一個子項目的上邊距margin-top如果碰不到有效border或者padding.就會不斷一層一層的找自己 “領導”(父元素,祖先元素)的麻煩。只要給領導設定個有效 border或者padding就可以有效管制這個目無領導的margin防止它越級,假傳聖旨,把自己的margin當領導的margin執行(雖然它的值比“真龍”的值大)。
     用Margin還是用Padding

     對於這個問題,很多人問過我,他們說,padding和margin為什麼要分開用,它們的區別也不大,達到的效果也不差,為什麼它們是兩種定義?很多人會容易弄混淆,特別是新手,一般都是新手問我這個問題。

     下面我們來說下,為什麼要區別來用,padding和margin:

     當我們想要在子項目使用背景,而父元素不適應背景,達到圖片“頂住”,文字“不頂住”間隔一段距離的時候要用padding;

     當我們讓子項目邊框要頂住父元素,而覆蓋父元素背景圖片或背景色的時候使用padding;

     當我們希望讓子項目和父元素有點距離,但不影響父元素背景圖片展示的時候用margin;

 

相關文章

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.