目錄
什麼是 CSS 盒子模型?
box-sizing
display
3. 區別?
#外邊距(margin)摺疊
什麼情況才會出現
如何解決?
觸發BFC
首頁 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

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24
行內元素和區塊級元素之間的差異有哪些 行內元素和區塊級元素之間的差異有哪些 Oct 16, 2023 am 09:51 AM

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

行內元素和區塊級元素有哪些 行內元素和區塊級元素有哪些 Aug 17, 2023 am 11:33 AM

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

行內元素與區塊級元素的差異:深入理解HTML中的元素分類 行內元素與區塊級元素的差異:深入理解HTML中的元素分類 Dec 23, 2023 am 10:01 AM

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

html行內元素和塊狀元素有哪些 html行內元素和塊狀元素有哪些 Feb 20, 2021 pm 04:03 PM

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屬性不影響行內元素 Feb 18, 2024 pm 04:36 PM

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

CSS行內元素和區塊級元素的常見範例:讓你對它們有更深入的了解 CSS行內元素和區塊級元素的常見範例:讓你對它們有更深入的了解 Dec 23, 2023 am 11:58 AM

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

html哪些行內元素和區塊級元素 html哪些行內元素和區塊級元素 Oct 16, 2023 am 09:57 AM

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

行內和區塊級元素有哪些 行內和區塊級元素有哪些 Nov 24, 2023 pm 01:57 PM

行內元素有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等等。

See all articles