什麼是外邊距折疊?什麼情況下出現?怎麼解決?
本篇文章帶大家了解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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

行內元素和區塊級元素的差異有「盒子模型」、「排列方式」、「內容顯示」、「相對位置」和「預設尺寸」五種區別:1、行內元素不產生獨立的框,寬度和高度由內容決定,而區塊級元素會產生一個獨立的矩形框,可以設定寬度、高度、邊距和填充等屬性;2、行內元素在同一行上水平排列,而區塊級元素會由上而下按順序排列;3、行內元素不能包含區塊級元素,而區塊級元素可以包含其他區塊級元素和行內元素等。

行內元素有div、p、h1-h6、ul、ol、li、table、form等;區塊級元素有span、a、img、strong、em、input、label等。兩種元素的特徵:1、行內元素,會獨佔一行,自動填充父容器的寬度,可以設定寬度、高度、內外邊距等屬性,可以包含其他區塊級元素和行內元素;2、行內元素,不會獨佔一行,寬度和高度由內容決定,內外邊距只影響元素本身的排列等等。

行內元素與區塊級元素的區別:深入理解HTML中的元素分類在HTML中,元素可分為行內元素與區塊級元素兩類。了解它們的差異對於正確掌握HTML的佈局和樣式是非常重要的。本文將深入理解行內元素和區塊級元素的特點,並提供具體的程式碼範例。行內元素行內元素是指在HTML文件中預設以行內方式顯示的元素。它們不會獨佔一整行,而是根據文件流程的排列方式在一行內緊密顯示。常見的行內

html行內元素有:a(錨點元素)、b(粗體)、br(換行)、code、em(強調)、font(字體設定)、i(斜體)、img(圖片)、input(輸入框)、span、strong(粗體強調)、textarea、u等;塊狀元素有:address(地址)、blockquote(塊引用)、center(居中對齊塊)、div、h1~h6(標題)、hr(水平分隔線)、p、ul、ol等。

Margin對於行內元素的效果是不同於區塊級元素的。在行內元素中,margin屬性只會對垂直方向的上下外邊距起作用,而不會對水平方向的左右外邊距起作用。舉個例子,在HTML中有一個段落元素,我們可以為其設定一些樣式,並觀察margin屬性對其的效果。 HTML程式碼如下所示:

CSS行內元素和區塊級元素的常見範例:讓你對它們有更深入的了解,需要具體程式碼範例引言:在CSS中,行內元素和區塊級元素是我們常常遇到的兩種元素類型。對於網頁佈局和樣式設計來說,理解行內元素和區塊元素的差異和使用方法非常重要。本文將以具體的程式碼範例介紹CSS中的行內元素和區塊級元素,幫助讀者更深入地理解它們的特性和用法。一、行內元素行內元素(inlineelem

html常用的行內元素和區塊級元素有:1、區塊級元素包括<div>、<p>、<ul>和<ol>、<li>、<h1>~<h6>和<header>等語意化標籤;2、行內元素包括<span>、<a>、<strong> 和<em>、<img>和<input>等標籤。

行內元素有a、span、strong、b、em、i、label、img、input、select、textarea、button、abbr、cite、code、big、small、sub和sup等。區塊級元素有div、p、h1-h6、form、ul、ol、dl、dt、dd、li、table、tr、td、th、hr、blockquote、address、menu和pre等等。
