导致具有宽度的块在新行上的规范是什么
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
,我正在寻找一个具体描述规范行为的答案。
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: table
和 display: flex
(即不是 inline-*
对应物),除了那些浮动的或绝对定位,因为它们从流中取出。
"lines" 的概念主要只适用于 following section 中描述的内联格式化上下文。你是对的,因为在块布局 本身 .
中没有 "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
,我正在寻找一个具体描述规范行为的答案。
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: table
和 display: flex
(即不是 inline-*
对应物),除了那些浮动的或绝对定位,因为它们从流中取出。
"lines" 的概念主要只适用于 following section 中描述的内联格式化上下文。你是对的,因为在块布局 本身 .
中没有 "lines" 的概念