html - CSS:什么时候删除空的匿名 block 框?

标签 html css whitespace

根据CSS Specification当 block 容器框同时具有内联和 block 内容时,将创建匿名 block 框。

规范使用的例子是

<DIV>
Some text
<P>More text</P>
</DIV>

Chrome 将其呈现为: 一些文字 更多文字

但是,给定:

<DIV>
[5 spaces followed by newline]
<P>Some text</P>
</DIV>

Chrome 将其呈现为: 一些文字

换句话说,包含空格的行被删除。

我对匿名 block 框的创建顺序和 CSS white-space specification 的顺序感到困惑已应用。

a) 如果我们假设首先创建匿名 block 框,我们有

<DIV>
<anonymous_block>[5 spaces followed by newline]</anonymous_block>
<P>Some text</P>
</DIV>

b) 然后,在匿名 block 的布局过程中,我们发现空白模型首先将整个内容缩减为一个空格。创建包含此空格的单行。

c) 此规则导致空间被消除: “如果行尾的空格 (U+0020) 将‘white-space’设置为‘normal’、‘nowrap’或‘pre-line’,它也会被删除。”

d) 此时我们有一条宽度为零的线,但它的高度(如果我正确理解 css 模型)是字体的高度。

因此,我希望在文本之前出现一个具有字体高度的空行。

既然不是这样,那上面哪一步是不正确的呢?请具体说明 CSS 规范如何导致观察到的行为。

最佳答案

block 中上下文中,空格将被忽略。

inline 中或 inline-block上下文中,空格被修剪成一个空格。

因此,您的 5 个空格字符和换行符不会触发匿名 block 的创建,因为 <p>设置 <div> 的内部在 block 上下文中

关于你的问题。我认为步骤 a) 不正确。这些步骤似乎以不同的顺序调用,从而改变了解释。

关于html - CSS:什么时候删除空的匿名 block 框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26647825/

相关文章:

html - 使用过渡文档类型有哪些缺点?

javascript - 将自定义导航栏添加到 Fullpage.js 中的特定部分

javascript - 为什么我的 Javascript trim 函数不起作用?

html - 为什么 float 父级和 float 子级不会崩溃?

java - 如何将元数据添加到html文件

css - 为光标添加颜色 : url("data:image)

css - Bootstrap 4 自定义网格

css - 灰度 SVG 无法在 Firefox 上运行

xml - XSLT : Insert new line between two elements in a template

html - HTML 中的非折叠但仍然(行)易碎空间?