slaveOftime
noteswebhtml

Paragraph p in html

2023-02-06

以前我一直以为 html 里的 tags 除了默认样式不同意外,其它都是一样,之所以要定义很多并给予不同的名字,主要是为了区分上下文,语义上的区别。当然啦,还有一些功能上的不同,比如,input,table 之类的。

但是从未想过会改变指定的 DOM 结构,比如你写的是:

<p>
    demo
    <section>foo</section>
</p>

当浏览器渲染时会改为:

<p>demo</p>
<section>foo</section>

我之所以会发现这个问题是在 Fun.Blazor 里,我定义的是

p {
    "demo"
    section { "foo" }
}

我一直以为是我写的弄个 bug, 或者是 blazor 里有一些特殊处理,然而直到现在读到 mdn 的定义时,才发现,

Paragraphs are block-level elements, and notably will automatically close if another block-level element is parsed before the closing p tag. See "Tag omission" below.

涨知识啦 🤷‍♂️

Do you like this post?