html - 为什么垂直边距不会折叠?

标签 html css margin

考虑以下 MWE

<!doctype html>
<html>
<style>
  div.compact-inverse {
    border: 1px solid black;
  }

  div.compact-inverse > input {
    display: inline-block;
    width: 16px;
    height: 16px;
    margin: 12px 0;
  }
  
  div.compact-inverse > label {
    display: inline;
    margin: 12px 0;
    padding-left: 18px;
    border: 1px solid red;
    background-color: pink;
  }
  
  div.compact-inverse > p {
    display: block;
    margin: 12px 0;
    padding-left: 34px;
    border: 1px solid blue;
    background-color: cyan;
  }
</style>
<body>
  <form>
    <div class='compact-inverse'>
      <input type='checkbox' name='delete_imported' /><label>Delete originals</label>
      <p>Original files will be deleted after the import when possible.</p>
    </div>
  </form>
</body>
</html>

正如您从屏幕截图中看到的,第一行(input with label)和第二行(p)之间的垂直边距) 不是折叠的而是堆叠的。

enter image description here

为什么?

最佳答案

来自the specification :

Adjoining vertical margins collapse

Two margins are adjoining if and only if … both belong to in-flow block-level boxes that participate in the same block formatting context

labelinput 是内联元素。它们不会生成 block 级盒子。

关于html - 为什么垂直边距不会折叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71549205/

相关文章:

html - react react react react

html - Notepad++ 中用于 html.erb 文件的颜色编码语法

html - 使用 css 在复选框条件下显示和隐藏 div

html - HTML5 中的 header

html - 为什么表格宽度和文本大小相对于彼此的比例不同?

javascript - 使用更少的缓存破坏静态图像

javascript - 向下遍历 DOM 以仅选择

css - 将背景颜色的下边缘设为另一种颜色

html - CSS 边距问题

html - 使用负上边距覆盖页眉时背景隐藏