父母和第一个/最后一个孩子的边际崩溃如何工作?

用户159

MDN说:

如果没有边框,填充,内嵌的内容,或者间隙来分隔margin-top与块的margin-top第一个子块,或者没有边框,填充,联内容的高度最小高度,或者最大高度来分隔margin-bottom的加上margin-bottom最后一个孩子的,那么这些边距就会崩溃。折叠的边距最终在父级之外。

我不明白最后一句话。为什么倒闭的保证金最终落在父母之外如果最终在父母之外,它将去哪儿?我已经在网上搜索并阅读了一些有关边距折叠的教程,但是我什么都没找到。

布莱克·曼

我整理了这个小演示,以帮助演示其工作方式:

http://jsfiddle.net/9pq8bm0o/

如您所见,我制作了三个元素,它们彼此嵌套。2个内部容器的上边距值均为20px,最外面的容器有上边界(被认为是边距分隔符的东西之一)。

那么这是什么意思?

由于两个子元素的顶部之间没有分隔,因此20px最外层的容器与两个子元素的BOTH之间只有空间...最里面的子元素的边距崩溃了。相反,仅由于该边界,最外面的容器内存在该边界。如果删除边界,则所有三个元素将共享相同的边界,该边界20px在所有三个容器之外。

那么为什么会这样呢?

考虑边距崩溃的最佳方法是这样的:在元素上要求边距将确保它的顶部具有那么多的边距,仅此而已(除非被迫拥有更多的边距)。因此,以我的示例为例,中间.parent元素20px上方是否空间?是的,它确实。最里面的孩子上方.child20px空间吗?是的,它也可以...因此,保证金规则已正确应用。只要空间在哪里,都没关系。

想象一下,.parent元素周围有一个边框,但是空白边沿仍然以没有边框的方式显示,然后问同样的问题。.parent元素是否有空格?是的,但是.child元素呢?不,它不再存在了,因为20px它与现在位于其上方的边界之间没有空间了。因此,实际上,空间不会崩溃,因此可以将这两个问题都回答为一个“是”。

我希望这会有所帮助。.它不是直接回答您的问题,而是提供更多有关其工作原理的理论,因此,可以说得更清楚些:

tl; dr

边距与填充不同,是要在元素外部添加空间。因此,边距将始终尽可能地折叠到最高父元素,以确保空间始终在“外部”。由于它位于元素外部,因此可以计入多个不同元素,因为它们都共享该“外部”空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何过滤最后一个孩子而不是第一个孩子

来自分类Dev

如何在第一个孩子前面移动最后一个孩子

来自分类Dev

祖父母的第一个孩子

来自分类Dev

针对父母的第一个孩子

来自分类Dev

垂直滚动,第一个和最后一个孩子在屏幕上居中

来自分类Dev

隐藏第一个和最后一个孩子的某些span元素

来自分类Dev

如何使孩子从第一个间隙到最后一个间隙跨越网格?

来自分类Dev

如何只对第一个嵌套的li申请最后一个孩子?

来自分类Dev

:第一个孩子和:最后一个孩子在猫头鹰传送带2中不工作

来自分类Dev

通过第一个孩子和最后一个孩子的样式按钮以及动态插入问题

来自分类Dev

如何在第一个孩子中选择第一个孩子

来自分类Dev

选择最后一个孩子,除非它也是第一个孩子

来自分类Dev

交换列-第一个孩子的最后一个孩子-引导程序

来自分类Dev

第一个孩子最后一个孩子Dom遍历不起作用

来自分类Dev

第一个孩子/最后一个孩子不同的悬停样式

来自分类Dev

如何在混合容器中选择班级的第一个孩子/最后一个孩子?

来自分类Dev

Nth-child css 目标最后一个和第一个 3 个孩子

来自分类常见问题

选择除最后一个孩子以外的每个孩子,但如果最后一个孩子是第一个也是唯一的孩子,则选择它

来自分类Dev

选择除最后一个孩子以外的每个孩子,但如果最后一个孩子是第一个也是唯一的孩子,则选择它

来自分类Dev

引导程序/ sass中的第一个和最后一个孩子不起作用

来自分类Dev

CSS无法摆脱UL的第一个和最后一个孩子的分隔线

来自分类Dev

关于停止在第一个和最后一个孩子左右滑动列表的问题

来自分类Dev

通过JS检测div的第一个和最后一个孩子是否具有类更改

来自分类Dev

如何从list <string>获取第一个和最后一个值?

来自分类Dev

如何访问字典中的第一个和最后一个元素?

来自分类Dev

如何忽略xpath中的第一个和最后一个元素

来自分类Dev

如何从CSV列中获取第一个和最后一个元素

来自分类Dev

如何通过XPath选择第一个和最后一个元素?

来自分类Dev

如何删除列中的第一个单词和最后一个单词?

Related 相关文章

  1. 1

    如何过滤最后一个孩子而不是第一个孩子

  2. 2

    如何在第一个孩子前面移动最后一个孩子

  3. 3

    祖父母的第一个孩子

  4. 4

    针对父母的第一个孩子

  5. 5

    垂直滚动,第一个和最后一个孩子在屏幕上居中

  6. 6

    隐藏第一个和最后一个孩子的某些span元素

  7. 7

    如何使孩子从第一个间隙到最后一个间隙跨越网格?

  8. 8

    如何只对第一个嵌套的li申请最后一个孩子?

  9. 9

    :第一个孩子和:最后一个孩子在猫头鹰传送带2中不工作

  10. 10

    通过第一个孩子和最后一个孩子的样式按钮以及动态插入问题

  11. 11

    如何在第一个孩子中选择第一个孩子

  12. 12

    选择最后一个孩子,除非它也是第一个孩子

  13. 13

    交换列-第一个孩子的最后一个孩子-引导程序

  14. 14

    第一个孩子最后一个孩子Dom遍历不起作用

  15. 15

    第一个孩子/最后一个孩子不同的悬停样式

  16. 16

    如何在混合容器中选择班级的第一个孩子/最后一个孩子?

  17. 17

    Nth-child css 目标最后一个和第一个 3 个孩子

  18. 18

    选择除最后一个孩子以外的每个孩子,但如果最后一个孩子是第一个也是唯一的孩子,则选择它

  19. 19

    选择除最后一个孩子以外的每个孩子,但如果最后一个孩子是第一个也是唯一的孩子,则选择它

  20. 20

    引导程序/ sass中的第一个和最后一个孩子不起作用

  21. 21

    CSS无法摆脱UL的第一个和最后一个孩子的分隔线

  22. 22

    关于停止在第一个和最后一个孩子左右滑动列表的问题

  23. 23

    通过JS检测div的第一个和最后一个孩子是否具有类更改

  24. 24

    如何从list <string>获取第一个和最后一个值?

  25. 25

    如何访问字典中的第一个和最后一个元素?

  26. 26

    如何忽略xpath中的第一个和最后一个元素

  27. 27

    如何从CSV列中获取第一个和最后一个元素

  28. 28

    如何通过XPath选择第一个和最后一个元素?

  29. 29

    如何删除列中的第一个单词和最后一个单词?

热门标签

归档