应使用语义化html标签构建帖子摘要列表:每条用包裹,标题与元信息置于内,标题用~,时间用,摘要正文用,缩略图用带loading="lazy"、width/height及srcset的,标题跳转用而非。

怎么用 HTML 写出可读、可访问的帖子摘要列表
纯 HTML 无法实现动态加载或用户交互,但能搭出结构清晰、语义正确、SEO 友好、屏幕阅读器可理解的帖子摘要骨架。关键不是“怎么堆 div”,而是“怎么选语义标签”。
-
<article></article>包每条帖子,不是<div> —— 它自带独立内容语义,对 RSS、爬虫、辅助技术都重要 <li> <code><header></header>放标题 + 元信息(作者、时间),别用<p></p>套<strong></strong>模拟标题 -
<summary></summary>不是摘要容器!它是<details></details>的子元素,不能乱用;摘要正文该用<p></p>或<div role="region" aria-label="摘要"> <li>标题必须用 <code><h2></h2>~<h4></h4>(按页面层级),禁用<h1></h1>(首页标题应为唯一<h1></h1>,属于整个页面) -
datetime属性值必须是 ISO 8601 格式(如"2024-05-20T14:30:00Z"),不能写"2024/05/20"或"昨天" - 视觉上显示“5分钟前”可以,但得用 JS 动态计算并更新,HTML 里只留标准时间戳作为源数据
- 没
datetime的<time></time>标签等于没写——浏览器不识别,爬虫忽略,日期排序功能直接失效 - 必须加
loading="lazy",否则滚动前就加载所有缩略图 - 强制指定
width和height(哪怕用 CSS 覆盖),防止布局抖动 - 用
srcset+sizes适配不同屏幕,例如:<img src="t-small.jpg" srcset="t-small.jpg 480w, t-medium.jpg 768w" sizes="(max-width: 480px) 100vw, 50vw"> - 避免用
background-image实现缩略图——它无法被右键保存、不进 alt 流程、暗色模式下无法通过prefers-color-scheme切换 -
<a></a>天然支持中键新标签页、右键复制链接、history.pushState、SEO 索引;<button></button>默认不触发任何这些 - 如果加了
onclick却没处理event.preventDefault(),点链接时可能触发两次跳转 - 禁用 JavaScript 时,
<button onclick="..."></button>完全不可用;而<a href="/post/123"></a>仍可跳转(降级保障) - 想加 loading 状态?用
<a href="/post/123" data-loading="false"></a>配合 JS 控制 class,别动标签本质
为什么 <time datetime="2024-05-20"></time> 比 “5分钟前” 更可靠
“5分钟前” 看起来友好,但对排序、缓存、国际化、无障碍支持全是障碍。静态 HTML 必须靠机器可读的时间戳打底。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
图片缩略图怎么写才不拖慢首屏且兼容暗色模式
论坛首页常带帖内图缩略图,但一张没优化的 img 就能让 LCP 崩盘,还可能在深色背景下白边刺眼。
点击标题跳转时,为什么 <a href="/post/123"></a> 比 <button onclick="location.href=..."></button> 更稳妥
标题是导航核心,不是操作按钮。用 <button></button> 模拟链接,会破坏语义、键盘焦点流和基础可用性。
最易被忽略的其实是链接的 rel 属性:外链要加 rel="noopener noreferrer",站内链接虽不用,但一旦混入用户生成内容(比如帖子正文里的 a 标签),漏掉这个就等于开 XSS 后门。结构再干净,一个没过滤的 javascript: href 就能让整页失效。










