社交动态流应使用语义化html:每条动态用包裹,发布时间用,评论区作为从属于,功能区块用并配标题,避免滥用或错误嵌套。

用 <article></article> 包裹每条动态,别用 <div> 硬套
<p>社交动态流本质是独立、可复用、可分发的内容单元,<code><article></article> 的语义正好匹配:它表示“可独立发布、可被订阅、可单独存档”的内容。浏览器和读屏器能据此识别内容边界,SEO 也能更好提取标题、发布时间等结构化数据。
常见错误是全用 <div class="post">,导致机器无法判断哪段是主体、哪段是评论区、哪段属于作者信息。
<ul>
<li>每条动态(含文字、图片、视频、发布时间、点赞数)应包裹在单个 <code><article></article> 内
<article></article>(嵌套合法,且语义清晰)<article></article> 的顶层——它们更适合放在 <header></header> 或 <aside></aside> 中
<section></section> 用来切分功能区块,不是给「样式容器」找借口
很多人把 <section></section> 当成“带语义的 <div>”,结果写成 <code><section class="feed-container"></section>,这违背了它的本意:<section></section> 应代表逻辑上自成一体的主题段落,比如「好友动态」「热门推荐」「广告位」这三个区域。
关键判断标准:这个区块能不能单独加一个 <h2></h2> 标题?如果能,且标题能准确概括其内容主题,那它就适合用 <section></section>。
立即学习“前端免费学习笔记(深入)”;
- 动态流主列表用
<section aria-labelledby="feed-title"></section>,配合<h2 id="feed-title">新鲜事</h2> - 侧边栏的「你可能感兴趣的人」是一个独立主题,用
<section></section>;但「加载更多」按钮只是交互控件,不属于内容主题,不要单独包一层<section></section> - 不要为实现栅格布局(如 flex / grid 容器)而滥用
<section></section>——用<div> 更合适 <h3>时间线要用 <code><time></time>,别只靠 CSS 类名或 data 属性动态发布时间不是装饰性文本,而是关键元数据。仅用
<span class="timestamp">2 小时前</span>会让辅助技术丢失时间语义,也无法被搜索引擎索引为有效日期。<time></time>的datetime属性必须是机器可解析的格式(如2024-06-15T14:23:00+08:00),前端可在此基础上用 JS 渲染成「刚刚」「2 小时前」等人话格式,但原始结构不能丢。- 动态卡片中发布时间必须用
<time datetime="2024-06-15T14:23:00+08:00">2 小时前</time> - 不要写
<time datetime="2 小时前">2 小时前</time>——datetime值无效,等于没用 - 服务端渲染时优先输出完整 ISO 时间戳;客户端 JS 可监听
<time></time>元素做相对时间更新,但不能删掉原始datetime
评论区用
<aside></aside>还是<section></section>?看它是否从属当前动态评论是当前动态的附属内容,不是独立主题,也不具备跨上下文复用性,所以它不属于
<section></section>(那是为并列主题准备的)。但评论又不是纯装饰或辅助说明,它有结构、有作者、有时序,所以也不适合用<aside></aside>(<aside></aside>更偏向“补充说明”类内容,比如百科侧栏、作者简介浮层)。更稳妥的做法:评论区整体作为
<article></article>的子部分,用<section></section>包裹,并加aria-labelledby指向动态标题,表明其从属关系。- 不要把整个评论区提级到和动态平级的
<section></section>,否则破坏内容层级 - 每条评论本身也是微型内容单元,可用
<article></article>或<li>(若用<ol></ol>列表组织) - 回复某条评论的嵌套评论,建议用
<blockquote></blockquote>+<cite></cite>明确引用关系,比纯缩进更语义化
<article> <header> <h3>今天加班到凌晨</h3> <time datetime="2024-06-15T01:45:00+08:00">1 小时前</time> </header> <p>咖啡喝到心慌…</p> <section aria-labelledby="comments-of-123"> <h4 id="comments-of-123">评论(3)</h4> <ul> <li><strong>张三</strong>:抱抱~</li> <li><strong>李四</strong>:<blockquote cite="#comment-456"><cite>张三</cite>:抱抱~</blockquote>同抱!</li> </ul> </section> </article>最常被忽略的一点:结构标签不解决样式问题,但一旦结构错乱,CSS Grid / Flex 布局、无障碍焦点流、服务端预渲染的语义提取,全都会悄悄出问题——而且很难定位。
- 动态卡片中发布时间必须用











