应使用搭配aria-label定义通知区域,如,因其语义准确、兼容性强;避免误用或,并配合aria-live="polite"确保无障碍朗读。

HTML 本身不处理“小组任务奖励发放”或“积分到账通知”的业务逻辑,它只负责把这类信息以结构化方式展示出来。所谓“标注”,其实是用语义化标签把通知区域清晰表达给浏览器和辅助工具,同时为后续 JS 控制、CSS 样式、自动化测试留出稳定钩子。
怎么用 <section></section> 和 aria-label 定义通知区域
直接用 <div> 套文字虽然能显示,但缺乏语义,屏幕阅读器无法识别这是“通知”,JS 也难精准定位。推荐用 <code><section></section> 包裹,并通过 aria-label 明确用途:
<section aria-label="小组任务奖励发放通知"><p>您已获得 50 积分,已计入账户。</p> </section>
-
aria-label比title更可靠——它强制覆盖可访问性名称,title在移动端常不触发 - 避免用
id="reward-notice"单独标识,因为 ID 需全局唯一,多人协作时容易冲突;优先靠语义标签 + ARIA 组合定位 - 如果页面有多个同类通知(如“积分到账”“任务完成”“审核通过”),用不同
aria-label值区分,别偷懒写成一样的
为什么不用 <aside></aside> 或 <article></article>
这两个标签有明确语义约束:<aside></aside> 表示与主内容关联弱的补充信息(比如侧边广告、作者简介);<article></article> 要求内容能独立分发(如一篇博客、一条新闻)。奖励通知是用户操作后的关键反馈,属于主流程一部分,用 <section></section> 最贴切。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 误用
<aside></aside>可能让屏幕阅读器跳过,或被某些无障碍工具忽略 - 若硬套
<article></article>,校验工具(如 axe)会报 “Article lacks heading” —— 因为规范要求<article></article>必须含<h1>–<h6></h6> </h1> - 实际项目中,后端模板常输出
<div class="notification">,这时只需加 <code>role="region"+aria-labelledby补语义,比改标签更稳妥JS 动态插入通知时,DOM 更新要带
aria-live积分到账是异步行为,通知往往由 JS 插入 DOM。若不声明实时性,屏幕阅读器不会朗读新内容。
<section aria-label="小组任务奖励发放通知" aria-live="polite"><p id="reward-msg"></p> </section>
-
aria-live="polite"适合非中断型通知(如积分到账);紧急提示(如支付失败)才用"assertive" - 不要在 JS 里反复
innerHTML = ...,应先清空再textContent写入,避免 XSS 风险和重复朗读 - Chrome 119+ 对
aria-live的触发更严格:若父容器display: none后再 show,需手动调用element.setAttribute('aria-live', 'polite')重置
真正麻烦的不是写对这几个标签,而是团队里有人顺手删掉
aria-label,说“视觉上看不出区别”;或者后端模板把通知塞进<span></span>里返回,前端懒得重构就用 CSS 强撑样式。这些地方一松懈,通知就等于没发出去——至少对部分用户来说。 -










