什么是外边距折叠?什么情况下出现?怎么解决?

本篇文章带大家了解一下css 盒模型,介绍一下什么是外边距折叠?什么情况下会出现外边距折叠?并谈谈解决方法。

什么是外边距折叠?什么情况下出现?怎么解决?

在 CSS 中,所有的元素都被一个个的 “盒子(box)” 包围着,我们广泛地使用两种“盒子” —— 块级盒子 (block box) 和 内联盒子 (inline box)。

什么是 CSS 盒模型?

在 CSS 中,盒模型(box model)是在设计和布局时使用。

盒模型的定义可以分成这几部分:

Content box: 这个区域是用来显示内容,大小可以通过设置 widthheight.Padding box: 包围在内容区域外部的空白区域; 大小通过 padding 相关属性设置。Border box: 包裹内容和内边距。大小通过 border 相关属性设置。Margin box: 这是最外面的区域,是盒子和其他元素之间的空白区域。大小通过 margin 相关属性设置。

1.png

块级盒子完整地应用了 CSS 盒模型,内联盒子只使用盒模型中定义的部分内容。

box-sizing

box-sizing 属性定义了浏览器应该如何计算一个元素的总宽度和总高度。

content-box(默认值),即标准盒模型,width: 100px 指的是内容区会有 100px 宽。盒子的大小 = content(100px) + padding + borderborder-box,即替代(IE)盒模型,width: 100px 指的是 内容区 + 边框 + 内边距 的总和是 100px 宽。盒子的大小 = content + padding + border = 100px

不论那种模型,margin 都是不计入实际大小 —— 当然,它会影响盒子在页面所占空间,但是影响的是盒子外部空间。

display

这里可以补充一个概念 — 内部和外部显示类型。

外部显示类型,我们通过对盒子 display 属性的设置,比如 inline 或者 block ,来控制盒子的是内联还是块级。内部显示类型,它决定了盒子内部元素是如何布局的。

如果设置 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) 会将其他元素从当前元素周围“推开”

2.png

外边距(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(除了 none)overflow(除了 visible)display(table-cell / table-caption / inline-block)position(除了 static / relative)

更多编程相关知识,请访问:编程视频!!

以上就是什么是外边距折叠?什么情况下出现?怎么解决?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1621317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 07:28:45
下一篇 2025年12月24日 07:28:57

相关推荐

  • 分享6个关于CSS盒模型的面试题,你能答对几个?

    本篇文章给大家分享6个关于css盒模型的面试题,查漏补缺,看看这六个面试题你能答对几个?是否可以全部答对? 对于前端面试来说,css盒模型肯定是必考必问的前端知识点,因为这是CSS基石中非常重要的内容,而且它关联的知识也非常多,那面试中一般都是如何层层递进的提问呢?下面一起来看看吧! 1、谈谈你对C…

    2025年12月24日 好文分享
    000
  • css怎么改行内元素高度

    css改行内元素高度的方法:可以利用line-heihgt属性来设置行内元素的高度,如【line-height:100px;】。line-height属性用来设置以百分比计的行高。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 line-height属性是css…

    2025年12月24日
    000
  • css行级元素和块级元素之间怎么转换

    在css中,可以使用display属性来实现行级元素和块级元素的转换,给行级元素设置“display:block;”样式即可转换为块级元素,给块级元素设置“display:inline;”样式即可转换为行级元素。 本教程操作环境:windows7系统、CSS3&&HTML5版、Del…

    2025年12月24日
    000
  • css中的块级元素和行内元素(内联元素)有哪些

    css中的块级元素有:1、a;2、abbr;3、big;4、br;5、em;6、font;7、imput。行内元素(内联元素)有:1、address;2、blockquote;3、center;4、dir;5、form;6、menu。 环境: 本文适用于所有品牌的电脑。 (学习视频分享:css视频教…

    2025年12月24日
    000
  • css中的块级元素是什么

    css中的块级元素就是指块元素,和其对应的是内联元素,它们都是html规范中的概念;块元素的特点是:1、总是在新行开始;2、行高、高度和边距可控制;3、可以容纳内联元素和其他块元素。 本教程操作环境:windows10系统、css3版,该方法适用于所有品牌电脑。 (学习视频分享:css视频教程) 块…

    2025年12月24日
    000
  • CSS块级元素有可继承的属性吗?

    在CSS中,块级元素有可以继承的属性,分别为:1、text-indent属性,用于规定文本块中首行文本的缩进;2、text-align属性,用于指定元素文本的水平对齐方式。 CSS 块级元素有可继承的属性。 块级元素可以继承的属性: 1、text-indent text-indent 属性规定文本块…

    2025年12月24日
    000
  • 常见的css块级元素有哪些

    css块级元素介绍: (学习视频分享:css视频教程) 根据W3C上的解释,就是说block(块级)元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱离了文档流)。其实,通俗点来说,就是块元素(block element)一般是其他元素的容器元素,能容纳其他块元素或内联元素。最常见的就…

    2025年12月24日
    000
  • css盒模型的边框用法你知道吗?这里有css盒模型的组成介绍

    本篇文章主要的介绍了关于css样式中的盒模型的边框介绍,有着完整的实例,还有css盒模型边框细节的介绍和代码的解释。下面就让我们一起来看这篇文章吧 首先我们来聊聊盒模型的组成部分: 想到盒模型就不由自主的想到一个盒子,css样式的盒模型里面有内容,边框,内边距,外边距等等,我们今天这篇文章主要说的就…

    2025年12月24日
    000
  • css块级元素的定义是什么?css块级元素有哪些?

    css块级元素是什么?对于一些刚学习css的朋友们来说,这个问题可能不太了解,那么,接下来这篇文章就来给大家介绍一下关于css块级元素的定义,以及css块级元素有哪些? css块级元素的定义 根据W3C上的解释,就是说block(块级)元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱…

    好文分享 2025年12月24日
    000
  • css行内元素有哪些?css块级元素和行内元素的区别

    很多css初学者在学习到css行内元素和css块级元素的时候,可能会容易搞混,那么,本篇文章就来给大家讲解一下css行内元素和块级元素有哪些?以及css块级元素和css行内元素的区别。 在上一篇文章css块级元素的定义是什么?css块级元素有哪些?中我们单独介绍css的块级(block)元素,所以在…

    2025年12月24日
    000
  • 如何正确使用块级元素和行内元素实现网页布局效果

    如何正确使用块级元素和行内元素实现网页布局效果 在进行网页布局时,我们常常会用到块级元素和行内元素。块级元素和行内元素是HTML中两种基本的元素类型,它们在网页布局中起到了不同的作用。本文将详细介绍如何正确使用块级元素和行内元素来实现网页布局效果,并提供具体的代码示例。 一、块级元素的特点及应用场景…

    2025年12月21日
    000
  • 掌握常见的块级元素和行内元素及其用法

    掌握常见的块级元素和行内元素及其用法,需要具体代码示例 在HTML中,元素可以被分为块级元素和行内元素。了解和掌握它们的特点和用法对于开发网页和理解页面结构是至关重要的。本文将介绍常见的块级元素和行内元素,并给出一些具体的代码示例。 一、块级元素 块级元素在HTML中以块的形式展示,它们会独占一行,…

    2025年12月21日
    000
  • 掌握块级元素和行内元素样式的技巧

    块级元素和行内元素的样式控制与设置技巧 块级元素和行内元素是HTML中两种常用的元素类型,它们具有不同的特性和用途。在进行样式控制和设置时,我们需要了解它们的区别并掌握相关的技巧。本文将为您介绍块级元素和行内元素的特点,并提供一些具体的代码示例。 一、块级元素的特点块级元素指的是显示在页面上独占一行…

    2025年12月21日
    000
  • 深入了解块级元素和行内元素的特点与区别

    深入了解块级元素和行内元素的特点与区别,需要具体代码示例 在HTML和CSS中,元素被分为两种类型:块级元素(block-level elements)和行内元素(inline elements)。它们在排版和布局上有着不同的表现和特点。深入了解块级元素和行内元素的特点与区别,对于开发和设计网页时的…

    2025年12月21日
    000
  • HTML5行内元素和块级元素特性的深入研究

    深入探究HTML5行内元素和块级元素的特性,需要具体代码示例 HTML 是构建网页的基础语言,它提供了许多元素来定义和格式化网页的内容。在HTML中,元素可以分为两类:行内元素(inline elements)和块级元素(block elements)。本文将深入探究这两种元素的特性,并通过具体的代…

    2025年12月21日
    000
  • 深入了解HTML5中的行内和块级元素

    了解HTML5中的行内元素和块级元素,需要具体代码示例 HTML5是当前 web 开发中广泛应用的一种标记语言。在 HTML5 中,元素被分为两大类别:行内元素和块级元素。理解这两种元素的特性对于正确使用 HTML5 是非常重要的。下面将通过代码示例来解释行内元素和块级元素的特点,以帮助读者更好地理…

    2025年12月21日 好文分享
    000
  • HTML5中常见的内联元素和块级元素有哪些?

    HTML5中常见的行内元素和块级元素有哪些? HTML5是一种用于创建网页和Web应用程序的标记语言。在HTML5中,元素按其显示行为可以分为两类:行内元素和块级元素。行内元素指的是在一行内显示,并且只占据内容所需要的宽度,不会独占一行;而块级元素指的是独占一行,会自动换行,并且可以设置宽度、高度和…

    2025年12月21日 好文分享
    000
  • HTML5行内元素和块级元素的简介与区别

    HTML5行内元素和块级元素简介及区别 HTML5是一种用于创建网页结构的标记语言。在HTML5中,元素被分为两种类型:行内元素(inline elements)和块级元素(block elements)。 行内元素简介:行内元素是指在文档流中显示为一行的元素。它们只占据自身内容的空间,并且不会破坏…

    2025年12月21日 好文分享
    000
  • HTML5行内元素和块级元素使用场景的快速指南

    快速了解HTML5行内元素和块级元素的使用场景,需要具体代码示例 HTML5是网页开发的标准语言,通过HTML标记语言可以构建丰富多样的网页内容。在HTML5中,元素被分为两种类型:行内元素和块级元素。本文将快速介绍这两种元素类型的使用场景,并给出相应的代码示例。 行内元素 行内元素是指那些不会独占…

    2025年12月21日
    000
  • 如何正确使用HTML块级元素和行内元素

    如何正确使用HTML块级元素和行内元素,需要具体代码示例 在使用HTML来构建网页时,块级元素和行内元素的正确应用是非常重要的。块级元素和行内元素有着不同的特性和用途,合理使用可以提高网页的可读性和效果。本文将详细介绍如何正确使用HTML块级元素和行内元素,并给出具体的代码示例。 一、块级元素(Bl…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信