<blockquote>必须包裹完整段落且每段用<p>显式包裹,cite属性只接受可访问绝对URL,出处显示须用<footer><cite>组合,不可作样式工具。

blockquote 必须包裹完整段落,不能裸放文本
直接写 <blockquote>第一段。第二段。</blockquote> 浏览器能显示,但语义断裂:屏幕阅读器可能连读成一句话,CSS 无法单独控制第二段间距,XHTML 或静态站点生成器会报验证警告。
正确做法是每段用 <p> 显式包裹:
<blockquote cite="https://example.com/article"> <p>这是第一段引文,有独立语义和逻辑边界。</p> <p>这是第二段,仍属于同一出处,但需独立段落结构。</p> </blockquote>
- 多段引用不套
<p>→ DOM 可能被浏览器自动补<div>,语义模糊、无障碍支持弱 - 引用内含代码或列表?可合法嵌套
<pre>、<ol>等流内容元素 - 别用
\n或空格模拟分段——那只是视觉欺骗,无语义支撑
cite 属性只接受 URL,填错等于没写
cite 是元数据属性,不渲染任何文字,只供爬虫、SEO 工具和部分屏幕阅读器(如 VoiceOver + Safari)提取。它不是“作者栏”,也不是“来源说明框”。
常见错误写法:
立即学习“前端免费学习笔记(深入)”;
-
cite="张三《前端手记》"—— 非 URL,被浏览器静默丢弃 -
cite="来源:https://example.com"—— 混入描述文本,URL 解析失败 -
cite="post.md"—— 相对路径在跨域或静态部署时极易 404
正确写法只有一种:cite 值必须是可访问的绝对 URL:
<blockquote cite="https://github.com/tc39/ecma262/blob/main/Sec-13.11.md#sec-for-in-statement">
- 纸质书?可用 ISBN 链接,如
cite="https://isbnsearch.org/isbn/97875198XXXXX" - 没合法 URL 就别硬塞
cite,改用其他语义方案(比如不加cite,靠<footer>手动标注) - 服务端渲染场景(Next.js/Vue SSR),
cite必须随 HTML 一起输出,JS 动态插入无效
显示出处必须用 <footer><cite> 组合,不能靠 cite 属性
cite 属性本身不产生任何可见文字。想让用户看到“——李四,《现代 HTML 实践》”,必须手动添加结构化 HTML,且位置严格限定在 <blockquote> 内部末尾。
正确结构:
<blockquote cite="https://html.spec.whatwg.org/multipage/grouping-content.html#the-blockquote-element"> <p>The <code><blockquote></code> element represents content that is quoted from another source.</p> <footer>— WHATWG, <cite>HTML Living Standard</cite></footer> </blockquote>
-
<footer>必须在<blockquote>内部,不能放在外面 -
<cite>只能包裹作品名(书名、文章标题、网站名),不能包人名、网址或时间 - 人名、机构名等应直接写在
<footer>里,不套<cite> - 禁止写
<cite><blockquote>...</blockquote></cite>—— 辅助技术会误判为“引用内容里提到了某人”
别把 blockquote 当样式容器用
<blockquote> 不是“加引号的段落容器”。它专为引用外部可溯源内容设计,滥用会导致语义丢失、辅助技术误判、SEO 权重归零。
- 只是想缩进或加边框?用
<div class="quote">+ CSS 更合适 - 行内短引用(如“这个方案很激进”)该用
<q>,不是<blockquote> - 嵌套多个
<blockquote>实现多层缩进?那是 CSS 该干的事,不是语义该承担的 - 复制 AI 生成的长段落直接塞进
<blockquote>?若无真实出处和cite,等于主动放弃语义
真正难的不是写对标签,而是判断“这段文字是否真的构成一次外部引用”——语义起点错了,后面所有格式都白搭。



















