reversed属性可使有序列表视觉倒序编号,但不改变dom结构或屏幕阅读器顺序;需配合start明确起始值,且每层嵌套需单独设置。

直接用 reversed 属性就能倒序,但要注意它只改变显示顺序,不反转语义逻辑。
用 reversed 实现倒序编号
给 <ol></ol> 加上 reversed 属性,浏览器会从大往小排号,比如 start="5" 配合 reversed 就显示 5、4、3、2、1。
-
reversed是布尔属性,写上即生效,无需赋值(reversed=""或reversed="reversed"都行) - 它不影响 DOM 结构或可访问性 API 的读取顺序——屏幕阅读器仍按源码顺序播报,只是视觉上倒着显示
- 和
start一起用时,start指的是第一个显示的数字,不是最大值;例如<ol reversed start="3"></ol>渲染为 3、2、1,而非 3、2、1、0 - 嵌套内层
<ol></ol>不继承外层的reversed,每层需单独设置
start 和 reversed 同时存在时的编号逻辑
很多人以为 reversed 是“让列表从最大值开始递减”,其实它只是翻转计数方向:起始值仍是 start 指定的数,后续项依次减 1。
-
<ol start="10" reversed></ol>→ 显示 10、9、8、7… -
<ol type="a" start="3" reversed></ol>→ 显示 c、b、a(因为start="3"对应字母表第 3 位) -
<ol type="i" start="5" reversed></ol>→ 显示 v、iv、iii、ii、i(罗马数字按阿拉伯数字计数再映射) - 如果没设
start,reversed默认从当前列表长度开始倒推,但这个行为不稳定,建议始终显式写start
为什么倒序后编号突然乱了?常见原因
最常踩的坑不是属性不会用,而是外部样式或结构干扰了默认行为。
- CSS 中写了
ol { list-style: none; }—— 编号直接消失,reversed也无效 - 父容器用了
display: flex或display: grid,导致<li>失去块级上下文,编号渲染异常 - 手动在
<li>里写了数字(如<li>1. 内容</li>)—— 语义破坏,reversed完全不起作用 - 嵌套时子
<ol></ol>没放在<li>里,而是和父<ol></ol>并列,导致被当成新列表,reversed独立作用
真正需要跨层级连续倒序(比如整个文档章节倒排),reversed 就不够用了——得换 CSS counter,但那是另一套逻辑,别混着用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











