国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > CSS > 正文

CSS網(wǎng)頁(yè)制作技巧教程:margin在IE中的表現(xiàn)

2024-07-11 09:02:22
字體:
供稿:網(wǎng)友

武林網(wǎng)(www.survivalescaperooms.com)文章簡(jiǎn)介:margin用法小結(jié).

CSS網(wǎng)頁(yè)制作技巧教程:margin在IE中的表現(xiàn)



margin的位移方向是指margin數(shù)值為正值時(shí)候的情形,如果是負(fù)值則位移方向相反。

如上圖所示:黃色子元素盒的margin-top,margin-left為負(fù)值時(shí),如-10px,則黃色子元素盒向上(向左)移動(dòng),越過相鄰元素10px;黃色子元素盒的margin-right,margin-bottom為負(fù)值時(shí),如-10px,黃色子元素盒不動(dòng),它右邊(下邊)的相鄰元素和左移(上移)10px,垂直外邊距合并問題垂直外邊距合并問題常見于第一個(gè)子元素的margin-top會(huì)頂開父元素與父元素相鄰元素的間距原因:一個(gè)盒子如果沒有上補(bǔ)白(padding-top)和上邊框(border-top),那么這個(gè)盒子的上邊距會(huì)和其內(nèi)部文檔流中的第一個(gè)子元素的上邊距重疊。父元素的第一個(gè)子元素的上邊距margin-top如果碰不到有效的border或者padding.就會(huì)不斷一層一層的找自己“領(lǐng)導(dǎo)”(父元素,祖先元素)的麻煩。只要給領(lǐng)導(dǎo)設(shè)置個(gè)有效的 border或者padding就可以有效的管制這個(gè)目無領(lǐng)導(dǎo)的margin防止它越級(jí)用Margin還是用Padding何時(shí)應(yīng)當(dāng)使用margin:
1、需要在border外側(cè)添加空白時(shí)。
2、空白處不需要背景(色)時(shí)。
3、上下相連的兩個(gè)盒子之間的空白,需要相互抵消時(shí)。如15px + 20px的margin,將得到20px的空白。何時(shí)應(yīng)當(dāng)時(shí)用padding:
1、需要在border內(nèi)測(cè)添加空白時(shí)。
2、空白處需要背景(色)時(shí)。
3、上下相連的兩個(gè)盒子之間的空白,希望等于兩者之和時(shí)。如15px + 20px的padding,將得到35px的空白。小結(jié):margin是用來隔開元素與元素的間距;padding是用來隔開元素與內(nèi)容的間隔。margin用于布局分開元素使元素與元素互不相干;padding用于元素與內(nèi)容之間的間隔,讓內(nèi)容(文字)與(包裹)元素之間有一段“呼吸距離”。

常見的瀏覽器下margin出現(xiàn)的bug
IE6中雙邊距Bug:
發(fā)生場(chǎng)合:當(dāng)給父元素內(nèi)第一個(gè)浮動(dòng)元素設(shè)置margin-left(元素float:left)或margin-right(元素float:right)時(shí)margin加倍。
解決方法:是給浮動(dòng)元素加上display:inline;CSS屬性;或者用padding-left代替margin-left。
原理分析:塊級(jí)對(duì)象默認(rèn)的display屬性值是block,當(dāng)設(shè)置了浮動(dòng)的同時(shí),還設(shè)置了它的外邊距就會(huì)出現(xiàn)這種情況。也許你會(huì)問:“為什么之后的對(duì)象和第一個(gè)對(duì)象之間就不存在雙倍邊距的Bug”?因?yàn)楦?dòng)都有其相對(duì)應(yīng)的對(duì)象,只有相對(duì)于其父對(duì)象的浮動(dòng)對(duì)象才會(huì)出現(xiàn)這樣的問題。第一個(gè)對(duì)象是相對(duì)父對(duì)象的,而之后對(duì)象是相對(duì)第一個(gè)對(duì)象的,所以之后對(duì)象在設(shè)置后不會(huì)出現(xiàn)問題。為什么display:inline可以解決這個(gè)雙邊距bug,首先是inline元素或inline-block元素是不存在雙邊距問題的。然后,float:left等浮動(dòng)屬性可以讓inline元素haslayout,會(huì)讓inline元素表現(xiàn)得跟inline-block元素的特性一樣,支持高寬,垂直margin和padding等,所以div class的所有樣式可以用在這個(gè)display inline的元素上。
IE6中浮動(dòng)元素3px間隔Bug:
發(fā)生場(chǎng)合:發(fā)生在一個(gè)元素浮動(dòng),然后一個(gè)不浮動(dòng)的元素自然上浮與之靠近會(huì)出現(xiàn)的3px的bug。
解決方法:右邊元素也一起浮動(dòng);或者為右邊元素添加IE6 Hack _margin-left:-3px;從而消除3px間距。
原理分析:IE6瀏覽器缺陷Bug。
IE6/7負(fù)margin隱藏Bug:
發(fā)生場(chǎng)合:當(dāng)給一個(gè)有hasLayout的父元素內(nèi)的非hasLayout元素設(shè)置負(fù)margin時(shí),超出父元素部分不可見。
解決方法:去掉父元素的hasLayout;或者賦hasLayout給子元素,并添加position:relative;
原理分析:IE6/7獨(dú)有的hasLayout產(chǎn)生問題。
IE6/7下ul/ol標(biāo)記消失bug:
發(fā)生場(chǎng)合:當(dāng)ul/ol觸發(fā)了haslayout并且是在ul/ol上寫margin-left,前面默認(rèn)的ul/ol標(biāo)記會(huì)消失。
解決方法:給li設(shè)置margin-left,而不是給ul/ol設(shè)置margin-left。
原理分析:IE6/7瀏覽器Bug
IE6/7下margin與absolute元素重疊bug:
發(fā)生場(chǎng)合:雙欄自適應(yīng)布局中,左側(cè)元素absolute絕對(duì)定位,右側(cè)的margin撐開距離定位。在IE6/7下左側(cè)應(yīng)用了absolute屬性的塊級(jí)元素與右邊的自適應(yīng)的文字內(nèi)容重疊。
解決方法:把左側(cè)塊級(jí)元素更改為內(nèi)聯(lián)元素,比如把div更換為span。
原理分析:這是由于IE6/IE7瀏覽器將inline水平標(biāo)簽元素和block水平的標(biāo)簽元素沒有加以區(qū)分一視同仁渲染了。屬于IE6/7瀏覽器渲染Bug。
IE6/7/8下auto margin居中bug:
發(fā)生場(chǎng)合:給block元素設(shè)置margin auto無法居中
解決方法:出現(xiàn)這種bug的原因通常是沒有Doctype,然后觸發(fā)了ie的quirks mode,加上Doctype聲明就可以了。在《打敗IE的葵花寶典》里給出的方法是給block元素添加一個(gè)width能夠解決,但根據(jù)本人親測(cè),加with此種方法是無效的,如果沒有Doctype即使給元素添加width也無法讓block元素居中。
原理分析:缺少Doctype聲明。
IE8下input[button | submit] 設(shè)置margin:auto無法居中
發(fā)生場(chǎng)合:ie8下,如果給像button這樣的標(biāo)簽(如button input[type="button"] input[type="submit"])設(shè)置{ display: block; margin:0 auto; }如果不設(shè)置寬度的話無法居中。
解決方法:可以給為input加上寬度
原理分析:IE8瀏覽器Bug。
IE8百分比padding垂直margin bug:
發(fā)生場(chǎng)合:當(dāng)父元素設(shè)置了百分比的padding,子元素有垂直的margin的時(shí)候,就好像父元素被設(shè)置了margin一樣。
解決方法:給父元素加一個(gè)overflow:hidden/auto。
原理分析:IE8瀏覽器Bug。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青神县| 乐都县| 连平县| 仪征市| 淳化县| 揭东县| 安远县| 乡宁县| 盐源县| 左贡县| 石河子市| 苏州市| 田林县| 焦作市| 乐平市| 隆化县| 霍林郭勒市| 六枝特区| 甘洛县| 扶余县| 贞丰县| 怀仁县| 九寨沟县| 桑日县| 天全县| 肇庆市| 长葛市| 益阳市| 阜宁县| 屏东县| 武鸣县| 寿阳县| 西宁市| 海门市| 禄丰县| 武平县| 定远县| 扶沟县| 闵行区| 兖州市| 云梦县|