本篇文章帶大家了解CSS 盒子模型,介紹一下什麼是外邊距折疊?什麼情況下會出現外邊距折疊?並談談解決方法。
在CSS 中,所有的元素都被一個個的「盒子(box)」 包圍著,我們廣泛地使用兩種「盒子」 —— 區塊級盒子(block box
) 和內嵌盒子(inline box
)。
什麼是 CSS 盒子模型?
在 CSS 中,盒子模型(box model)是在設計和佈局時使用。
盒子模型的定義可以分成這幾部分:
-
Content box: 這個區域是用來顯示內容,大小可以透過設定
width
和height
. -
Padding box: 包圍在內容區域外部的空白區域;大小透過
padding
相關屬性設定。 -
Border box: 包裹內容與內邊距。大小透過
border
相關屬性設定。 -
Margin box: 這是最外面的區域,是盒子和其他元素之間的空白區域。大小透過
margin
相關屬性設定。
區塊級盒子完整地應用了 CSS 盒模型,內嵌盒子只使用盒子模型中定義的部分內容。
box-sizing
#box-sizing
屬性定義了瀏覽器應該如何計算一個元素的總寬度和總高度。
-
content-box
(預設值),即標準盒子模型,width: 100px
指的是內容區會有100px 寬。- 盒子的大小=
content(100px)
padding
border
- 盒子的大小=
-
border-box
,即替代(IE)盒模型,width: 100px
指的是內容區邊框內邊距
的總和是100px 寬。- 盒子的大小=
content
padding
border
=100px
- 盒子的大小=
##不論那種模型,margin 都是不計入實際大小 —— 當然,它會影響盒子在頁面所佔空間,但是影響的是盒子外部空間。
display
#這裡可以補充一個概念 -- 內部和外部顯示類型。
- 外部顯示類型,我們透過對盒子display
屬性的設置,例如
inline或
block,來控制盒子的是內聯還是塊級。
- 內部顯示類型,它決定了盒子內部元素是如何佈局的。
如果設定display: flex,在一個元素上,外部顯示類型是block
,但是內部顯示類型修改為
flex。此盒子的所有直接子元素都會成為
flex 元素,會根據 彈性盒子(
Flexbox )規則進行佈局。
也有一個特殊的值 -- display: inline-block#,它在內聯和區塊之間提供了一個中間狀態。這對於以下情況非常有用:不發生換行,但可以設定寬度和高度,也就是說實現了區塊級的部分效果:
- 設定
- width
和
height屬性會生效。
- padding
,
margin, 以及
border會推開其他元素。
行內元素/ 區塊級元素
HTML4 中,元素被分成兩大類別:inline (內嵌元素) 與
block (區塊級元素)。
1. 什麼是行內元素?
一個行內元素只佔據它對應標籤的邊框所包含的空間。 常見的行內元素有a、
b、
span、
img、
strong、
sub
sup、
button、
input、
label、
select、
textarea
2. 什麼是區塊級元素?
區塊級元素佔據其父元素(容器)的整個空間,因此創建了一個「區塊」。通常瀏覽器會在區塊級元素前後另起一行新行。 常見的區塊級元素有div、
ul 、
ol、
li、
dl、
dt、
dd、
h1、
h2、
h3、
h4 、
h5、
h6 、
p
3. 區別?
格式上(預設),行內元素不會換行,而區塊級元素都會換行。
內容上(預設),行內元素只能包含資料和其他行內元素。而區塊級元素可以包含行內元素和其他區塊級元素。
-
在屬性上:
-
#行內元素
-
width
和height
設定無效(可以設定line-height), - 內邊距(
padding
)、外邊距(margin
)和邊框(border
) 在上下方向 不會對其他元素產生影響。
-
-
區塊級元素
-
width
和height
屬性可以發揮作用, - 內邊距(
padding
)、外邊距(margin
) 和邊框(border
) 會將其他元素從目前元素周圍“推開”
-
-
#行內元素
#外邊距(margin)摺疊
區塊的上外邊距(margin-top
)和下外邊距(margin-bottom
)有時合併(折疊)為單一邊距,其大小為單一邊距的最大值(或如果它們相等,則僅為其中一個),這種行為稱為邊距折疊。
什麼情況才會出現
2 個或多個毗鄰的的普通流中的塊元素垂直方向上的margin 會折疊
- 鄰近: 是指沒有被非空內容、padding、border 或clear 分隔開
- 垂直方向: 是指只有垂直方向的margin 才會
如何解決?
創建了
BFC
的元素 和它的子元素/兄弟元素不會發生折疊-
設定
padding
/border
,一些具體的場景:-
父元素的
margin-top
和子元素的margin-top
發生重疊。發生重疊是因為它們是相鄰的,所以我們可以透過這一點來解決這個問題。我們可以為父元素設
border-top
、padding-top
值來分隔它們。 -
高度為
auto
的父元素的margin-bottom
和子元素的margin-bottom
發生重疊。發生重疊一個是因為它們相 鄰,一個是因為父元素的高度不固定。因此我們可以為父元素設定
border-bottom
、padding-bottom
來分隔它們,也可以為父元素設定一個高度,max-height
和min-height
也能解決這個問題。 -
是沒有內容的元素,本身的
margin-top
和margin-bottom
發生的重疊。我們可以透過為其設定
border
、padding
或高度來解決這個問題。
-
觸發BFC
float
- ##float
(除了none)
- overflow
(除了visible)
(table-cell / table-caption / inline-block)
position###(除了static / relative)#########更多程式相關知識,請造訪:###程式設計影片###! ! ###以上是什麼是外邊距折疊?什麼情況下出現?怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)