配置流程必须用 <ol>,因其语义声明执行顺序不可颠倒;每个原子操作占一个 <li>;用 start、type、reversed 等原生属性精准控制编号逻辑,避免 CSS 模拟导致的可访问性与兼容性问题。

用 <ol> 写配置流程,别用 <ul>
配置流程必须用 <ol>,不是因为“看起来像步骤”,而是语义上它声明了执行顺序不可颠倒。浏览器、屏幕阅读器、SEO 爬虫都依赖这个标记判断逻辑先后——用 <ul> 包裹安装步骤,等于告诉机器“这些事谁先谁后无所谓”,实际却可能引发权限错误或环境初始化失败。
常见错误现象:
- 用
<ul>+ CSS 伪元素模拟数字,结果打印时编号消失、无障碍工具读不出顺序 - 把整个配置说明塞进一个
<li>里,再用换行或<br>分隔,导致无法单独选中/复制某一步
正确做法是每个原子操作占一个 <li>,哪怕只是“运行 npm install”或“修改 config.json 第 12 行”。
start 属性解决非 1 起始的配置分段
当配置流程拆成多个章节(如“第二章:服务端配置”),需要从 2 开始编号,直接加 start="2" 最稳妥:
立即学习“前端免费学习笔记(深入)”;
<ol start="2"> <li>启动数据库服务</li> <li>导入初始 schema</li> <li>验证连接池配置</li> </ol>
注意:start 是 HTML 原生属性,不依赖 CSS,所有浏览器都支持,且能被爬虫和辅助技术正确识别。不要用 CSS counter-reset 模拟,那在禁用样式的环境下会退化成无编号列表。
容易踩的坑:
-
start值必须是整数,传字符串"2"可以,但"02"或"2.0"会被忽略,回退到默认 1 - 嵌套内层
<ol>不会自动继承外层start,比如外层start="2",内层仍从 1 开始,需手动设start或改用 CSS counters
用 type="a" 或 type="i" 区分主步骤与子操作
配置流程常含“主步骤→子动作”结构,比如“3. 配置中间件”下面有“3.1 安装插件”“3.2 启用日志”——这时别硬塞多级 <ol> 嵌套,优先用 type 切换编号样式更轻量:
<ol>
<li>准备运行环境</li>
<li>安装核心组件</li>
<li>配置中间件
<ol type="a">
<li>安装插件</li>
<li>启用日志</li>
<li>设置超时时间</li>
</ol>
</li>
</ol>type="a" 生成 a、b、c,type="i" 生成 i、ii、iii,视觉上自然弱化子级,又保持语义层级。比全用数字更易扫读,也避免编号冲突(例如不会出现“3.4”后面跳“4.1”)。
兼容性提醒:
-
type在所有现代浏览器中有效,但旧版 IE8- 对i/I支持不稳定,若需兼容,用 CSSlist-style-type: lower-roman更可靠 -
type是 HTML 属性,写在标签上就行,不需要额外 CSS;但如果用了list-style-typeCSS,则会覆盖type,二者别混用
倒序编号适用于回滚或校验类配置步骤
某些配置流程最后要“反向验证”,比如部署后逐项检查:先测接口,再查日志,最后看进程状态——这时用 reversed 属性比手动写 3→2→1 更准确:
<ol reversed start="3"> <li>确认服务进程存活</li> <li>检查关键日志无 ERROR</li> <li>调用健康检查接口返回 200</li> </ol>
渲染结果是 3、2、1,且语义明确表示“这是收尾动作,按此逆序执行验证”。比用 <ul> 加自定义文字(如“✅ 第三步:…”)更利于自动化工具解析。
关键细节:
-
reversed必须配合start才可控,否则默认从最大值开始(如 10 项就从 10 倒数),容易出错 - 不建议在嵌套内层用
reversed,可读性骤降,人眼难追踪“外层正序、内层倒序”的混合逻辑
真正麻烦的是跨文档引用配置步骤(比如 A 文档说“参见本流程第 5 步”),此时必须确保 start 和嵌套层级全局一致,否则编号对不上——这类场景建议放弃纯 HTML 编号,改用锚点 + 显式 ID(如 <li id="step-5">)配合 JS 动态生成编号。



















