导致具有宽度的块在新行上的规范是什么

What is the spec that causes blocks with width to be on new lines

我不确定我是否理解 display: block 的这一方面。

如果我有两个具有设置宽度的后续块元素,为元素留出足够的空间,以便它们可以并排,看起来它们应该并排- 并排。但事实并非如此。

body {
 padding: 0;
 margin: 0;
}
div {
 height: 100px;
 box-sizing: border-box;
 padding: 0;
 margin: 0;
 border: 0;
 display: block;
}
.left {
 background-color: blue;
}
.right {
 background-color: red;
}
.half {
 width: 30%;
}
<div class="half left"></div><div class="half right"></div>

据我了解,css 布局模块中没有 "line" 的概念,因此没有任何东西(如 w3schools 所说)具有 "all blocks start on a new line".

那么规范中描述此行为的部分到底是什么?

注意: 我知道有很多方法可以并排放置东西,从 inline-block,到 float,再到 flexbox,我正在寻找一个具体描述规范行为的答案。

Section 9.4.1 of CSS2.1:

In a block formatting context, boxes are laid out one after the other, vertically, beginning at the top of a containing block.

实际上就是这些。准确地说,参与块格式化上下文的框是该上下文中正常流程中的块级框。这包括块框(display: block)和任何其他块级框,例如 display: tabledisplay: flex(即不是 inline-* 对应物),除了那些浮动的或绝对定位,因为它们从流中取出。

"lines" 的概念主要只适用于 following section 中描述的内联格式化上下文。你是对的,因为在块布局 本身 .

中没有 "lines" 的概念