摘要:也能用于內聯元素這是規范所允許的的和屬性對非替換內聯元素無效例如和。解決方法把左側塊級元素更改為內聯元素,比如把更換為。
CSS 邊距屬性定義元素周圍的空間。通過使用多帶帶的屬性,可以對上、右、下、左的外邊距進行設置。也可以使用簡寫的外邊距屬性同時改變所有的外邊距。——W3School
邊界,元素周圍生成額外的空白區。“空白區”通常是指其他元素不能出現且父元素背景可見的區域。——CSS權威指南
margin屬性為給定元素設置所有四個(上下左右)方向的外邊距屬性。這是四個外邊距屬性設置的簡寫。四個外邊距屬性設置分別是: margin-top, margin-right, margin-bottom 和 margin-left 。指定的外邊距允許為負數。
margin : [| | auto ]{1,4}
指定一個固定的寬度。可以為負數
百分比相對于該元素的包含塊的寬度(相對于該塊的百分比)。該值可以為負數。
瀏覽器會自動選擇一個合適的margin來應用。它可以用于將一個塊居中。
margin始終是透明的(父元素設置背景, margin區域可見的)
在margin屬性中一共有兩類參考線,top和left的參考線屬于一類,right和bottom的參考線屬于另一類。top和left是以外元素為參考,right和bottom是以元素本身為參考。margin的位移方向是指margin數值為正值時候的情形,如果是負值則位移方向相反。
總結:
1: margin-top和 margin-left 值得偏移相對于相鄰元素margin或border; 如果沒有相鄰元素則包含容器的content邊為及基準
2: margin-bottom和 margin-right 相對于自身進行偏移
外邊距合并指的是,當兩個垂直外邊距相遇時,它們將形成一個外邊距。合并后的外邊距的高度等于兩個發生合并的外邊距的高度中的較大者。
合并幾種情況 W3Shool CSS外邊距合并
margin 在塊級元素下, 他的特性可以完全體現, 上下左右任你設定。
margin也能用于內聯元素,這是規范所允許的 margin的top和bottom屬性對非替換內聯元素無效, 例如和。
IE6中雙邊距Bug:
發生場合:當給父元素內第一個浮動元素設置margin-left(元素float:left)或margin-right(元素float:right)時margin加倍。
解決方法:是給浮動元素加上display:inline;CSS屬性;或者用padding-left代替margin-left。
原理分析:塊級對象默認的display屬性值是block,當設置了浮動的同時,還設置了它的外邊距就會出現這種情況。也許你會問:“為什么之后的對象和第一個對象之間就不存在雙倍邊距的Bug”?因為浮動都有其相對應的對象,只有相對于其父對象的浮動對象才會出現這樣的問題。第一個對象是相對父對象的,而之后對象是相對第一個對象的,所以之后對象在設置后不會出現問題。為什么display:inline可以解決這個雙邊距bug,首先是inline元素或inline-block元素是不存在雙邊距問題的。然后,float:left等浮動屬性可以讓inline元素haslayout,會讓inline元素表現得跟inline-block元素的特性一樣,支持高寬,垂直margin和padding等,所以div class的所有樣式可以用在這個display inline的元素上。
IE6中浮動元素3px間隔Bug:
發生場合:發生在一個元素浮動,然后一個不浮動的元素自然上浮與之靠近會出現的3px的bug。
解決方法:右邊元素也一起浮動。
原理分析:IE6瀏覽器缺陷Bug。
IE6/7負margin隱藏Bug:
發生場合:當給一個有hasLayout的父元素內的非hasLayout元素設置負margin時,超出父元素部分不可見。
解決方法:去掉父元素的hasLayout;或者賦hasLayout給子元素,并添加position:relative;
原理分析:IE6/7獨有的hasLayout產生問題。
IE6/7下ul/ol標記消失bug:
發生場合:當ul/ol觸發了haslayout并且是在ul/ol上寫margin-left,前面默認的ul/ol標記會消失。
解決方法:給li設置margin-left,而不是給ul/ol設置margin-left。
原理分析:IE6/7瀏覽器Bug
IE6/7下margin與absolute元素重疊bug:
發生場合:雙欄自適應布局中,左側元素absolute絕對定位,右側的margin撐開距離定位。在IE6/7下左側應用了absolute屬性的塊級元素與右邊的自適應的文字內容重疊。
解決方法:把左側塊級元素更改為內聯元素,比如把div更換為span。
原理分析:這是由于IE6/IE7瀏覽器將inline水平標簽元素和block水平的標簽元素沒有加以區分一視同仁渲染了。屬于IE6/7瀏覽器渲染Bug。
IE6/7/8下auto margin居中bug:
發生場合:給block元素設置margin auto無法居中
解決方法:出現這種bug的原因通常是沒有Doctype,然后觸發了ie的quirks mode,加上Doctype聲明就可以了。在《打敗IE的葵花寶典》里給出的方法是給block元素添加一個width能夠解決,但根據本人親測,加with此種方法是無效的,如果沒有Doctype即使給元素添加width也無法讓block元素居中。
原理分析:缺少Doctype聲明。
IE8下input[button | submit] 設置margin:auto無法居中
發生場合:ie8下,如果給像button這樣的標簽(如button input[type="button"] input[type="submit"])設置{ display: block; margin:0 auto; }如果不設置寬度的話無法居中。
解決方法:可以給為input加上寬度
原理分析:IE8瀏覽器Bug。
IE8百分比padding垂直margin bug:
發生場合:當父元素設置了百分比的padding,子元素有垂直的margin的時候,就好像父元素被設置了margin一樣。
解決方法:給父元素加一個overflow:hidden/auto。
原理分析:IE8瀏覽器Bug。
海玉 W3C
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/1635.html
摘要:當一個元素從正常文檔流中抽出后,仍然在文檔流中的其他元素將忽略該元素并填補他原先的空間基于文檔流,理解定位模式相對定位,即相對于元素在文檔流中位置進行偏移。絕對定位,即完全脫離文檔流,相對于屬性非值的最近父級元素進行偏移。 主要參考文檔:http://www.zhangxinxu.com/wor...https://www.cnblogs.com/dojo-... 測試例子:https...
? 深入css布局(3) — margin問題與格式化上下文 ? ???? 在css知識體系中,除了css選擇器,樣式屬性等基礎知識外,css布局相關的知識才是css比較核心和重要的點。今天我們來深入學習一下css布局相關的知識。 ? css布局篇已經講個2篇了,前面我們深入講解了 盒模型與box-sizing, 元素分類,行框,定位與浮動等知識點。今天呢,我們把css布局篇做一個結尾,最后...
摘要:題目最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度,中間欄寬度自適應。代碼如下效果如下所示乍一看實現了三列布局,但是題目要求等高,這個可就麻煩了。 題目 最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度200px,中間欄寬度自適應。要求三欄的高度隨最高的一欄展示 解題 step1 常規拿到這個面試題,首先想到的是三個盒子左浮動右浮動...
摘要:題目最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度,中間欄寬度自適應。代碼如下效果如下所示乍一看實現了三列布局,但是題目要求等高,這個可就麻煩了。 題目 最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度200px,中間欄寬度自適應。要求三欄的高度隨最高的一欄展示 解題 step1 常規拿到這個面試題,首先想到的是三個盒子左浮動右浮動...
摘要:垂直居中相關知識總結前言工作中用到了很多關于垂直居中相關的知識之前,在上提問了個問題關于垂直居中,大家有沒有什么比較好的建議。 垂直居中相關知識總結 前言 工作中用到了很多關于垂直居中相關的知識之前,在SF上提問了個問題CSS關于垂直居中,大家有沒有什么比較好的建議。非常感謝各位前輩對我的幫助,前輩們給的答案都非常多也各式各樣,我覺得有必要把大家的回答總結一下。 方法總結 一、絕對定...
閱讀 3312·2021-09-02 15:41
閱讀 2840·2021-09-02 09:48
閱讀 1382·2019-08-29 13:27
閱讀 1170·2019-08-26 13:37
閱讀 846·2019-08-26 11:56
閱讀 2491·2019-08-26 10:24
閱讀 1652·2019-08-23 18:07
閱讀 2626·2019-08-23 15:16