自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CSS中margin邊界疊加問(wèn)題及解決方案

開(kāi)發(fā) 前端
本文向大家描述一下CSS的margin邊界疊加問(wèn)題,邊界疊加是一個(gè)相當(dāng)簡(jiǎn)單的概念。但是,在實(shí)踐中對(duì)網(wǎng)頁(yè)進(jìn)行布局時(shí),它會(huì)造成許多混淆。

你對(duì)CSS的margin邊界疊加的概念是否了解,這里和大家分享一下,當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí),第一個(gè)元素的底與第二個(gè)元素的頂發(fā)生疊加。

CSS的margin邊界疊加深度剖析

邊界疊加簡(jiǎn)介

邊界疊加是一個(gè)相當(dāng)簡(jiǎn)單的概念。但是,在實(shí)踐中對(duì)網(wǎng)頁(yè)進(jìn)行布局時(shí),它會(huì)造成許多混淆。簡(jiǎn)單地說(shuō),當(dāng)兩個(gè)垂直邊界相遇時(shí),它們將形成一個(gè)邊界。這個(gè)邊界的高度等于兩個(gè)發(fā)生疊加的邊界的高度中的較大者。

  當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí),第一個(gè)元素的底邊界與第二個(gè)元素的頂邊界發(fā)生疊加,見(jiàn)圖:


  ◆元素的頂邊界與前面元素的底邊界發(fā)生疊加

  當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒(méi)有填充或邊框?qū)⑦吔绶指糸_(kāi)),它們的頂和/或底邊界也發(fā)生疊加,見(jiàn)圖:  


  ◆元素的頂邊界與父元素的頂邊界發(fā)生疊加

  盡管初看上去有點(diǎn)兒奇怪,但是邊界甚至可以與本身發(fā)生疊加。假設(shè)有一個(gè)空元素,它有邊界,但是沒(méi)有邊框或填充。在這種情況下,頂邊界與底邊界就碰到了一起,它們會(huì)發(fā)生疊加,見(jiàn)圖:
  

  ◆元素的頂邊界與底邊界發(fā)生疊加

  如果這個(gè)邊界碰到另一個(gè)元素的邊界,它還會(huì)發(fā)生疊加,見(jiàn)圖:  

  ◆空元素中已經(jīng)疊加的邊界與另一個(gè)空元素的邊界發(fā)生疊加

  這就是一系列空的段落元素占用的空間非常小的原因,因?yàn)樗鼈兊乃羞吔缍集B加到一起,形成一個(gè)小的邊界。

  邊界疊加初看上去可能有點(diǎn)兒奇怪,但是它實(shí)際上是有意義的。以由幾個(gè)段落組成的典型文本頁(yè)面為例(見(jiàn)圖2-8)。第一個(gè)段落上面的空間等于段落的頂邊界。如果沒(méi)有邊界疊加,后續(xù)所有段落之間的邊界將是相鄰頂邊界和底邊界的和。這意味著段落之間的空間是頁(yè)面頂部的兩倍。如果發(fā)生邊界疊加,段落之間的頂邊界和底邊界就疊加在一起,這樣各處的距離就一致了?! ?/p>

  ◆邊界疊加在元素之間維護(hù)了一致的距離

  只有普通文檔流中塊框的垂直邊界才會(huì)發(fā)生邊界疊加。行內(nèi)框、浮動(dòng)框或絕對(duì)定位框之間的邊界不會(huì)疊加。#p#

邊界疊加的問(wèn)題

  邊辦疊加是一個(gè)如果誤解就會(huì)導(dǎo)致許多麻煩的CSS特性。請(qǐng)參考div元素內(nèi)嵌套段落的簡(jiǎn)單示例:

  1. <dividdivid="box"> 
  2. <p>Thisparagraphhasa20pxmargin.p> 
  3. div> 
  4.  

  div框設(shè)置了10像素邊界,段落設(shè)置了20像素的邊界:

  1. #box{  
  2. margin:10px;  
  3. background-color:#d5d5d5;  
  4. }  
  5. p{  
  6. margin:20px;  
  7. background-color:#6699ff;  
  8. }  
  9.  

  你會(huì)自然地認(rèn)為產(chǎn)生的樣式會(huì)像圖1-1那樣,在段落和div之間有20像素的距離,在div外邊圍繞著10像素的邊界。

  圖1-1

  但是,產(chǎn)生的樣式實(shí)際上像圖1-2。

  圖1-2

  這里發(fā)生了兩個(gè)情況。首先,段落的20像素上邊界和上邊界與div的10像素邊界疊加,形成一個(gè)單一的20像素垂直邊界。其次,這些邊界不是被DIV包圍,而是突出到DIV的頂部和底部的外邊。出現(xiàn)這種情況是由于具有塊級(jí)子元素的元素計(jì)算其高度方式造成的。

  如果元素沒(méi)有垂直邊框和填充,那么它的高度就是它包含的子元素的頂部和底部邊框邊緣之間的距離。因此,包含的子元素的頂部和底部空白邊就突出到容器元素的外邊。但是,有一個(gè)簡(jiǎn)單的解決方案。通過(guò)添加一個(gè)垂直邊框或填充,空白邊就不再疊了,而且元素的高度就是它包含的子元素的頂部和底部空白邊邊緣之間的距離。

  為了讓前面的示例看起來(lái)像圖1-1這樣,只需在div周圍添加補(bǔ)白或邊框:

  1. #box{  
  2. margin:10px;  
  3. padding:1px;/*或者border:1pxsolidcolor;*/  
  4. background-color:#d5d5d5;  
  5. }  
  6. p{  
  7. margin:20px;  
  8. background-color:#6699ff;  
  9. }  
  10.  

  邊l界疊加的大多數(shù)問(wèn)題可以通過(guò)添加透明邊框或1px的補(bǔ)白來(lái)修復(fù)。

補(bǔ)充解決方案:

  1.外層padding

  2.透明邊框border:1pxsolidtransparent;

  3.絕對(duì)定位postion:absolute:

  4.外層DIVoverflow:hidden;

  5.內(nèi)層DIV 加float:left;display:inline;

  6.外層DIV有時(shí)會(huì)用到zoom:1;

【編輯推薦】

  1. Firefox下margin-top失效解決技巧
  2. IE6.0對(duì)padding的解讀分析
  3. CSS樣式表高效使用八大秘訣
  4. CSS中margin參數(shù)省略原則
  5. IE6中常見(jiàn)CSS兼容性解決十大技巧

 

責(zé)任編輯:佚名 來(lái)源: 236web.com
相關(guān)推薦

2010-09-02 15:54:54

CSS邊界疊加

2010-08-31 10:17:52

CSSmargin邊界疊加

2010-08-26 12:59:29

marginCSS

2010-09-02 15:18:42

CSSASP.NET

2010-12-21 17:39:59

2010-08-31 16:09:04

DIV+CSS

2010-12-24 13:05:22

2010-08-26 08:45:32

margin:0pxa

2010-09-07 13:24:18

CSS

2010-09-07 09:08:03

DIV彈出層

2024-09-18 00:15:58

2010-09-01 14:51:12

CSSIEFirefox

2019-10-08 16:05:19

Redis數(shù)據(jù)庫(kù)系統(tǒng)

2015-05-12 16:31:22

Elasticsear開(kāi)源分布式搜索引擎

2010-09-13 17:15:59

margin-top

2010-08-26 13:24:15

CSSmargin

2009-08-03 18:06:28

JS性能問(wèn)題

2010-06-12 12:46:04

Grub Rescue

2022-04-07 07:31:30

CSSCSS Reset前端

2016-09-27 21:14:53

JavaURL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)