ol标签内直接写文本会被浏览器忽略,编号不显示;必须用li包裹每一项;start只接受整数,否则退化为1;reversed仅对decimal类型生效;type属性兼容性差,推荐用css的list-style-type控制样式。

ol标签里直接写文本会失效
浏览器会忽略<ol></ol>内部的纯文本,编号根本不会出现。必须用<li>包裹每一项,哪怕内容只是一句话。
-
<ol>第一步</ol>→ 不显示编号,文本直接裸奔 -
<ol><li>第一步</li></ol>→ 正常显示 “1. 第一步” - 别把
<p></p>或<div>直接塞进<code><ol></ol>——HTML规范只允许<li>作为直接子元素,其他会被跳过或错位渲染start属性设错数字会导致退化为1
start只接受整数,负数、小数、空字符串都会被浏览器忽略,自动 fallback 到 1。-
<ol start="-2"></ol>→ 显示 1, 2, 3…(不是 -2, -1, 0) -
<ol start="3.5"></ol>→ 同样从 1 开始 -
<ol start="5"></ol>是安全的,但要注意 IE11 及更早版本不支持该属性 - 若需语义上“跳过前4项”,仅靠
start="5"不够——屏幕阅读器仍播报“第 1 项”,应配合aria-posinset和aria-setsize
reversed只对decimal类型生效
加了
reversed却没倒序?大概率是你同时用了type="a"或type="i"。这个属性在 Chrome/Firefox 中仅对默认数字编号(decimal)起作用。-
<ol reversed> <li>A</li> <li>B</li> </ol>→ 正确显示 “2. A”, “1. B” -
<ol type="a" reversed> <li>a</li> <li>b</li> </ol>→ 仍显示 “a”, “b”,reversed被静默忽略 -
reversed和start可共存:<ol reversed start="10"></ol>→ 编号为 10, 9, 8…
CSS list-style-type比type属性更可靠
type属性支持值少、兼容性差(比如type="I"在 Safari 上表现不稳),现代项目应优先用 CSS 控制。-
list-style-type: lower-alpha替代type="a" -
list-style-type: upper-roman替代type="I" -
list-style-type: none+::before+content可实现 emoji 编号、图标前缀等定制效果 - 注意:
list-style-position: inside会让换行文字缩进对齐编号,而outside(默认)保持项目符号左对齐固定位置
<ol></ol>必须完整写在父<li>内部,而不是紧挨着放——否则结构断裂,CSS继承和可访问性全失效。 -











