搜尋
首頁web前端css教學什麼是外邊距折疊?什麼情況下出現?怎麼解決?

什麼是外邊距折疊?什麼情況下出現?怎麼解決?

Aug 19, 2021 am 10:37 AM
css盒模型區塊級元素行內元素

本篇文章帶大家了解CS​​S 盒子模型,介紹一下什麼是外邊距折疊?什麼情況下會出現外邊距折疊?並談談解決方法。

什麼是外邊距折疊?什麼情況下出現?怎麼解決?

在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 屬性的設置,例如inlineblock ,來控制盒子的是內聯還是塊級。
  • 內部顯示類型,它決定了盒子內部元素是如何佈局的。

如果設定display: flex,在一個元素上,外部顯示類型是block,但是內部顯示類型修改為flex。此盒子的所有直接子元素都會成為 flex 元素,會根據 彈性盒子(Flexbox )規則進行佈局。

也有一個特殊的值 -- display: inline-block#,它在內聯和區塊之間提供了一個中間狀態。這對於以下情況非常有用:不發生換行,但可以設定寬度和高度,也就是說實現了區塊級的部分效果:

    設定
  • widthheight 屬性會生效。
  • padding, margin, 以及 border 會推開其他元素。

行內元素/ 區塊級元素

HTML4 中,元素被分成兩大類別:

inline (內嵌元素) 與block (區塊級元素)。

1. 什麼是行內元素?

一個行內元素只佔據它對應標籤的邊框所包含的空間。

常見的行內元素有

abspanimgstrongsub supbuttoninputlabelselecttextarea

2. 什麼是區塊級元素?

區塊級元素佔據其父元素(容器)的整個空間,因此創建了一個「區塊」。通常瀏覽器會在區塊級元素前後另起一行新行。

常見的區塊級元素有

divulollidldtddh1h2 h3h4 h5h6 p

3. 區別?

  • 格式上(預設),行內元素不會換行,而區塊級元素都會換行。

  • 內容上(預設),行內元素只能包含資料和其他行內元素。而區塊級元素可以包含行內元素和其他區塊級元素。

  • 在屬性上

    • #行內元素
      • widthheight 設定無效(可以設定line-height),
      • 內邊距(padding)、外邊距(margin)和邊框(border) 在上下方向 不會對其他元素產生影響。
    • 區塊級元素
      • widthheight 屬性可以發揮作用,
      • 內邊距(padding)、外邊距(margin) 和邊框(border) 會將其他元素從目前元素周圍“推開”

什麼是外邊距折疊?什麼情況下出現?怎麼解決?

#外邊距(margin)摺疊

區塊的上外邊距(margin-top)和下外邊距(margin-bottom)有時合併(折疊)為單一邊距,其大小為單一邊距的最大值​​(或如果它們相等,則僅為其中一個),這種行為稱為邊距折疊

什麼情況才會出現

2 個或多個毗鄰的的普通流中的塊元素垂直方向上的margin 會折疊

  • 鄰近: 是指沒有被非空內容、padding、border 或clear 分隔開
  • 垂直方向: 是指只有垂直方向的margin 才會

如何解決?

  • 創建了BFC 的元素 和它的子元素/兄弟元素不會發生折疊

  • 設定padding / border ,一些具體的場景:

    • 父元素的margin-top 和子元素的margin-top 發生重疊。

      發生重疊是因為它們是相鄰的,所以我們可以透過這一點來解決這個問題。我們可以為父元素設 border-toppadding-top 值來分隔它們。

    • 高度為 auto 的父元素的 margin-bottom 和子元素的 margin-bottom 發生重疊。

      發生重疊一個是因為它們相 鄰,一個是因為父元素的高度不固定。因此我們可以為父元素設定border-bottompadding-bottom 來分隔它們,也可以為父元素設定一個高度,max-heightmin-height 也能解決這個問題。

    • 是沒有內容的元素,本身的 margin-topmargin-bottom 發生的重疊。

      我們可以透過為其設定 borderpadding 或高度來解決這個問題。

觸發BFC

  • float
  • ##float (除了none)
  • overflow(除了visible)
#display

(table-cell / table-caption / inline-block)

position###(除了static / relative)#########更多程式相關知識,請造訪:###程式設計影片###! ! ###

以上是什麼是外邊距折疊?什麼情況下出現?怎麼解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金--荷包蛋卷。如有侵權,請聯絡admin@php.cn刪除
丟失的CSS技巧cohost.org丟失的CSS技巧cohost.orgApr 25, 2025 am 09:51 AM

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

光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

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

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

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

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

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

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

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

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

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

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

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

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

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

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SecLists

SecLists

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

SublimeText3 Mac版

SublimeText3 Mac版

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