必须在段落中包含引用块还是在引用块中包含段落?

12
在HTML5中,将 blockquote 放在段落内是正确的吗?还是相反的方式是正确的?我的意思是,逻辑告诉我们 blockquote 可能引用多个段落,不是吗?但是 blockquote 是否需要包含 q 元素?有人能解释一下正确的结构吗?编辑:添加一些信息。我产生了这个疑问,因为尝试使用CSS实现引号时,它们不会出现在 blockquote 上,但会出现在 q 元素上。正确的方法是什么?

blockquote, q {
  quotes: "\201C""\201D""\2018""\2019";
  font-style: italic;
}
<blockquote>
  <p>Hello!</p>
  <p>Say something!</p>
</blockquote>
<p>He told me <q>Say something!</q>
</p>

3个回答

14
根据W3组提供的规范, blockquote是一个块级语义,应包含完整的引用,可以由多个段落组成。因为blockquote本身包含一个或多个段落(或其他元素),所以将其放在段落中没有太多意义。以下是W3G提供的示例:
<blockquote>
    <p>My favorite book is <cite class="from-source">At Swim-Two-Birds</cite></p>
    <footer>- <cite>Mike[tm]Smith</cite></footer>
</blockquote>

正如您所看到的,此示例的blockquote包含在p元素中但不包含在q元素中的文本。

q元素是文本级语义,应该用于指示文本的一部分是引用。因为blockquote已经指示了引用,所以不需要使用q元素标记内部的文本。以下是来自W3G规范的一个示例:

<p>The man said <q>Things that are impossible just take longer</q>. I disagreed with him.</p>

长话短说:如果您使用blockquote元素,请将其他元素(例如p元素)放在其内部,但不必在blockquote内使用q元素。

11
根据 规范<p> 元素只能包含 Phrasing content ,而 blockquote 不是。
另一方面,blockquote 可以包含 Flow content,而 <p> 是 Flow content。
因此,只有位于 blockquote 中的段落是有效的,反之则不然。

4
q元素的块级替代品。

如果您想引用多个段落,使其看起来像一个块,请使用blockquote并在其中放置p

请参阅MDN上的blockquote

HTML <blockquote>元素(或HTML块引用元素)表示所包含的文本是扩展引用。

示例中有一个<blockquote>内部的<p>

<q>则表明:

HTML引用元素(<q>)表示所包含的文本是短行内引用。这个元素适用于不需要段落断点的短引用;对于长引用,请使用<blockquote>元素。


底线:正确的用法是:

<blockquote>
  <p>Paragraph 1.</p>
  <p>Paragraph 2.</p>
</blockquote>
<p>
  Paragraph 3 with a <q>short quotation</q>.
</p>

这很好,但让我真正怀疑的是,仅使用 blockquote 并不显示引号,我不知道为什么。我会更新我的问题。 - Vandervals
1
@Vandervals 这不应该显示引号。默认样式是边距,而不是引号。 - Sebastian Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接