溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

css中什么是外邊距折疊

發(fā)布時間:2021-08-26 14:32:31 來源:億速云 閱讀:99 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)css中什么是外邊距折疊的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在 CSS 中,所有的元素都被一個個的 “盒子(box)” 包圍著,我們廣泛地使用兩種“盒子” —— 塊級盒子 (block box) 和 內(nèi)聯(lián)盒子 (inline box)。

什么是 CSS 盒模型?

在 CSS 中,盒模型(box model)是在設(shè)計和布局時使用。

盒模型的定義可以分成這幾部分:

  • Content box: 這個區(qū)域是用來顯示內(nèi)容,大小可以通過設(shè)置 widthheight.

  • Padding box: 包圍在內(nèi)容區(qū)域外部的空白區(qū)域; 大小通過 padding 相關(guān)屬性設(shè)置。

  • Border box: 包裹內(nèi)容和內(nèi)邊距。大小通過 border 相關(guān)屬性設(shè)置。

  • Margin box: 這是最外面的區(qū)域,是盒子和其他元素之間的空白區(qū)域。大小通過 margin 相關(guān)屬性設(shè)置。

css中什么是外邊距折疊

塊級盒子完整地應(yīng)用了 CSS 盒模型,內(nèi)聯(lián)盒子只使用盒模型中定義的部分內(nèi)容。

box-sizing

box-sizing 屬性定義了瀏覽器應(yīng)該如何計算一個元素的總寬度和總高度。

  • content-box(默認(rèn)值),即標(biāo)準(zhǔn)盒模型,width: 100px 指的是內(nèi)容區(qū)會有 100px 寬。

    • 盒子的大小 = content(100px) + padding + border

  • border-box,即替代(IE)盒模型,width: 100px 指的是 內(nèi)容區(qū) + 邊框 + 內(nèi)邊距 的總和是 100px 寬。

    • 盒子的大小 = content + padding + border = 100px

不論那種模型,margin 都是不計入實際大小 —— 當(dāng)然,它會影響盒子在頁面所占空間,但是影響的是盒子外部空間。

display

這里可以補充一個概念 -- 內(nèi)部和外部顯示類型。

  • 外部顯示類型,我們通過對盒子 display 屬性的設(shè)置,比如 inline 或者 block ,來控制盒子的是內(nèi)聯(lián)還是塊級。

  • 內(nèi)部顯示類型,它決定了盒子內(nèi)部元素是如何布局的。

如果設(shè)置 display: flex,在一個元素上,外部顯示類型是 block,但是內(nèi)部顯示類型修改為 flex。 該盒子的所有直接子元素都會成為 flex 元素,會根據(jù) 彈性盒子(Flexbox )規(guī)則進行布局。

還有一個特殊的值 -- display: inline-block,它在內(nèi)聯(lián)和塊之間提供了一個中間狀態(tài)。這對于以下情況非常有用:不發(fā)生換行,但可以設(shè)定寬度和高度,也就是說實現(xiàn)了塊級的部分效果:

  • 設(shè)置 widthheight 屬性會生效。

  • padding, margin, 以及 border 會推開其他元素。

行內(nèi)元素 / 塊級元素

HTML4 中,元素被分成兩大類: inline (內(nèi)聯(lián)元素) 與 block (塊級元素)。

1. 什么是行內(nèi)元素?

一個行內(nèi)元素只占據(jù)它對應(yīng)標(biāo)簽的邊框所包含的空間。

常見的行內(nèi)元素有 ab、 span、 img、 strongsub sup、 button、 input、 label、 select、 textarea

2. 什么是塊級元素?

塊級元素占據(jù)其父元素(容器)的整個空間,因此創(chuàng)建了一個“塊”。通常瀏覽器會在塊級元素前后另起一個新行。

常見的塊級元素有 div、ul 、ol、 li、 dl、 dt、 ddh2、 h3、 h4h5 、 h6、h7 、p

3. 區(qū)別?

  • 格式上(默認(rèn)情況),行內(nèi)元素不會換行,而塊級元素都會換行。

  • 內(nèi)容上(默認(rèn)情況),行內(nèi)元素只能包含數(shù)據(jù)和其他行內(nèi)元素。而塊級元素可以包含行內(nèi)元素和其他塊級元素。

  • 在屬性上

    • widthheight 屬性可以發(fā)揮作用,

    • 內(nèi)邊距(padding)、外邊距(margin) 和 邊框(border) 會將其他元素從當(dāng)前元素周圍“推開”

    • widthheight 設(shè)置無效(可以設(shè)置 line-height),

    • 內(nèi)邊距(padding)、外邊距(margin) 和 邊框(border) 在 上下方向 不會對其他元素產(chǎn)生影響。

    • 行內(nèi)元素

    • 塊級元素

css中什么是外邊距折疊

外邊距(margin)折疊

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

什么情況才會出現(xiàn)

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

  • 毗鄰: 是指沒有被非空內(nèi)容、padding、border 或 clear 分隔開

  • 垂直方向: 是指只有垂直方向的 margin 才會

如何解決?

  • 創(chuàng)建了 BFC 的元素 和它的子元素/兄弟元素不會發(fā)生折疊

  • 設(shè)置 padding / border ,一些具體的場景:

    • 父元素的 margin-top 和子元素的 margin-top 發(fā)生重疊。

      發(fā)生重疊是因為它們是相鄰的,所以我們可以通過這一點來解決這個問題。我們可以為父元素設(shè) border-top、padding-top 值來分隔它們。

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

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

    • 是沒有內(nèi)容的元素,自身的 margin-topmargin-bottom 發(fā)生的重疊。

      我們可以通過為其設(shè)置 borderpadding 或者高度來解決這個問題。

觸發(fā) BFC 的因素

  • float(除了 none)

  • overflow(除了 visible)

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

  • position(除了 static / relative)

感謝各位的閱讀!關(guān)于“css中什么是外邊距折疊”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI