是语义化排行榜的最佳HTML结构,序号内置、轻量且无障碍友好;应避免手动编号或嵌套列表,用CSS计数器自定义样式,动态更新需增量操作,并补充aria-label和标题以提升可访问性与SEO。

用
标签生成天然排行榜结构
HTML 的 关键点: 默认数字(1, 2, 3…)够用,但排行榜常需「第1名」「No.1」或罗马数字等。纯 CSS 可控,无需 JS。 推荐用 用 JS 更新排行榜数据时,若用 单纯 序号语义和 DOM 顺序必须严格一致;任何用 CSS 或 JS “看起来像排行榜”但结构松散的做法,长期都会在可访问性测试或数据抓取中暴露问题。(ordered list)本身就是为排名、顺序、优先级这类语义设计的,浏览器默认渲染为带数字序号的列表,完全契合排行榜场景。它比用 的序号是语义内置的,不是装饰;不要手动写“1.”“2.”——那会破坏可访问性和维护性。
包裹,顺序即名次 或混用 ,否则序号逻辑易错乱start="2" 属性,而非删掉第一个
自定义序号样式:用
list-style-type 和 counter-reset
list-style-type: none + ::before 伪元素配合计数器,灵活且兼容性好:<ol class="rank-list">
<li>张三</li>
<li>李四</li>
</ol>
.rank-list {
counter-reset: rank;
}
.rank-list li {
list-style-type: none;
position: relative;
}
.rank-list li::before {
counter-increment: rank;
content: "第" counter(rank) "名";
font-weight: bold;
margin-right: 8px;
}
counter-reset 必须设在 上,否则计数不重置type="A" 或 type="i" 等原生属性——它们不支持中文前缀,且在部分旧版 Safari 中表现异常flex-direction: column-reverse(但会破坏语义顺序)动态榜单更新时,别直接 innerHTML 覆盖
innerHTML = newHtmlString 替换整个 ,会导致:焦点丢失、滚动位置重置、已绑定事件销毁、动画中断。
document.createElement + appendChild/replaceChild 增量更新 根节点不变,只更新内部 列表无障碍与 SEO 注意:别忽略
aria-label 和标题 不足以让屏幕阅读器明确这是「2024 年销量排行榜」。需补充上下文。
加 aria-label="2024年Q3销售额排行榜",比仅靠视觉样式更可靠 外包裹 ,既利于 SEO,也帮助辅助技术定位内容区块销售排行榜
role="list" 手动模拟 —— 原生已有正确 role,加了反而干扰
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











