关键看内容是否有顺序关系:有先后、步骤或优先级用<ol>,否则用<ul>;<dl>适用于术语与解释等键值对。语义决定标签选择,而非样式呈现。

选无序列表还是有序列表,关键看内容有没有顺序关系,而不是它“看起来要不要编号”。
先看内容有没有明确的先后、步骤或优先级
如果答案是肯定的,就用 <ol>;否则一律用 <ul>。
- 安装步骤、操作流程、法律条款、考试排名——必须用 <ol>
- 产品特性、导航菜单(除非菜单本身有逻辑层级顺序)、标签云、热门城市罗列——用 <ul>
- 别因为“想让它显示数字”就硬套 <ol>,比如“推荐品牌:苹果、华为、小米”,三者并列无先后,<ul>才语义正确
注意浏览器默认行为只是表象
浏览器给 <ol> 加数字、给 <ul> 加圆点,这只是渲染结果。语义才是根本——屏幕阅读器、搜索引擎、后续维护都依赖这个判断。
- 用错标签会导致无障碍支持失效,后期修复成本远高于写对时多敲几个字母
- CSS 可以把 <ol> 的编号改成字母或罗马数字,也能让 <ul> 显示数字,但改样式不等于改语义
嵌套和结构也要保持语义一致
子列表该用什么,取决于它在上下文中的逻辑关系,不是看父列表用了什么。
立即学习“前端免费学习笔记(深入)”;
- 主流程是步骤(<ol>),其中某一步的可选项是并列关系(如“可选配件”),那子列表就该用 <ul>
- 主菜单是导航项(<ul>),但下拉子菜单若存在操作顺序(如“新建→打开→保存”),子项就该用 <ol>
- 嵌套不宜超过三层,否则可读性和可访问性都会明显下降
还有第三种:描述列表 <dl>
当你要表达“术语+解释”“问题+答案”“属性+值”这类键值对关系时,<ul> 和 <ol> 都不合适,该用 <dl>、<dt>、<dd>。
- 比如 HTML 定义、API 参数说明、商品规格表
- 它不强调顺序,也不只是并列项,而是成对出现的关系结构



















