当前位置: 首页 > 面试题库 >

边距在flexbox中崩溃

陈晟睿
2023-03-14
问题内容

通常,在CSS中,当父级和最后一个子级具有边距时,这些边距会折叠以创建单个边距。例如

article {

  margin-bottom: 20px

}



main {

  background: pink;

  margin-bottom: 20px;

}



footer {

  background: skyblue;

}


<div id="container">

  <main>

    <article>

      Item 1

    </article>

    <article>

      Item 2

    </article>

  </main>

  <footer>Footer</footer>

</div>

如您所见,即使20pxarticlemain标记上都指定了的边距,您也只能20px在最后 一篇文章页脚 之间得到一个边距。

但是,当使用 flexbox 时,我们40px在上一个 文章页脚 之间 留有 边距- 20p从文章到main
的全边距为x,20px从main到 footer的 边距为全x 。

#container {

  display: flex;

  flex-direction: column;

}



article {

  margin-bottom: 20px

}



main {

  background: pink;

  margin-bottom: 20px;

}



footer {

  background: skyblue;

}


<div id="container">

  <main>

    <article>

      Item 1

    </article>

    <article>

      Item 2

    </article>

  </main>

  <footer>Footer</footer>

</div>

有没有一种方法可以使 flexbox的页 边距行为与非flexbox的 边距相同?


问题答案:

边距折叠是 块格式化上下文的功能

在[ flex格式化环境中 没有边际崩溃。

3. Flex容器:flexinline-flex display

一个伸缩容器为其内容建立一个新的伸缩格式上下文。这与建立块格式化上下文相同,除了使用Flex布局而不是块布局。例如,浮点数不会侵入flex容器,并且flex容器的边距不会随其内容的边沿收缩。



 类似资料:
  • 你好,我正在尝试使用flex均匀地分配额外的可用宽度的div框之间的图像之间的边距。我试过使用弹性基础:30%;然而,它不是均匀地分配图像的边距,而是将图像垂直地堆叠在彼此的顶部。 null null

  • 主要内容:定义各个方向上的内边距,内边距简写形式内边距(padding)是指元素内容区与边框之间的区域,与外边距不同,内边距会受到背景属性的影响。您可以通过下面的属性来设置元素内边距的尺寸: padding-top:设置元素内容区上方的内边距; padding-right:设置元素内容区右侧的内边距; padding-bottom:设置元素内容区下方的内边距; padding-left:设置元素内容区左侧的内边距; padding:内边距属性的

  • 主要内容:为元素设置外边距,外边距折叠元素的外边距(margin)是围绕在元素边框以外(不包括边框)的空白区域,这片区域不受 background 属性的影响,始终是透明的。 为元素设置外边距 默认情况下如果不设置外边距属性,HTML 元素就是不会有外边距,但也有例外的情况,因为浏览器会为一些 HTML 元素设置默认的外边距,例如 元素。您可以使用下面的属性来为 HTML 元素设置外边距: margin-top:设置元素上方的外边距;

  • 我使用flexbox在桌面窗口屏幕中布局我的index.html,在一行中有两个div元素,在第二行中有一个长div元素,在第三行中有两个div元素,其中一个包含一个列表。我需要第一行和第三行中两个div元素之间的一些行间距。当我尝试在div元素上使用左边缘或右边缘时,div元素会相互折叠。 我试图改变每个div元素的宽度,但它们最终会互相折叠。我还尝试了在内容类上证明内容和对齐内容,但没有任何结

  • 外边距会在元素外创建额外的空白区域,这个区域不能放置其他元素。因此,大多数情况下,普通流中都是通过外边距来控制元素之间的距离,使元素间出现间隔。 外边距默认是透明的,在这个区域中可以看到父元素的背景。也不能通过任何属性,来为外边距设置颜色,或让其不透明。但是,可以通过 margin属性来设置外边距的宽度,其值可以是百分比、长度值、或 auto。 由于外边距也是可选的,默认值是 0。所以,如果没有显