无序列表必须用包裹内容,直接在中写文字会导致浏览器不识别为列表项、无项目符号且破坏语义;正确写法是每个条目独立置于内,子也必须嵌套在父内部。

无序列表 <ul></ul> 必须用 <li> 包裹内容
直接在 <ul></ul> 里写文字,浏览器不会识别为列表项——它只会把那段文本当成普通文本流,不带任何项目符号,也不参与列表语义。常见错误是这样写:<ul>首页<br>产品<br>关于</ul>,结果页面上三行字平铺直出,毫无列表结构。
正确做法只有一条:每个条目必须独立包裹在 <li> 标签内:
- 首页
- 产品
- 关于
-
<li>是唯一合法的子元素,不能用<p></p>、<div> 或文本节点直接替代 <li>嵌套时也一样:子级 <code><ul></ul>必须放在某个<li>内部,否则结构失效 - 忘记闭合
-
type="I"(大写 i)生成罗马数字 I、II、III,但type="i"生成的是 i、ii、iii;混用大小写会导致编号中断或回退 -
start值必须是整数,设start="0"会显示 0,但部分旧版 IE 可能忽略;设start="-1"多数浏览器不支持,直接退回到默认 1 - 嵌套
<ol></ol>时,子<ol></ol>的start独立计算,和父级无关——别指望自动接续编号
<li> 被浏览器“吞掉”成一个项
有序列表 <ol></ol> 的 start 和 type 不是装饰性属性
它们直接影响浏览器生成的计数逻辑,不是单纯换图标。比如 <ol start="5"><li>第五步</li></ol> 真的会从 5 开始编号;<ol type="a"></ol> 生成的是 a、b、c,不是 A、B、C(大小写敏感,小写 a 对应小写字母序列)。
容易踩的坑:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
CSS 清除默认样式时,list-style-type: none 不够用
只设 list-style-type: none 会让符号消失,但 <ul></ul> 和 <ol></ol> 默认自带 padding-left(通常 40px),视觉上仍留白一大块。用户常误以为“样式清掉了”,实际只是符号藏了,缩进还在。
真正干净的重置要两步走:
ul, ol {
list-style-type: none;
padding-left: 0;
}
- 对
<li>单独设margin或padding时,注意它不包含序号/符号所占空间——序号是“画”在内容左侧的,不影响盒模型宽度 - 用
background-image替换项目符号时,路径错误或未设background-repeat: no-repeat会导致图标重复铺满 - 移动端 Safari 对
list-style-image支持不稳定,优先用伪元素 +background方案
嵌套列表时,<li> 是层级锚点,不是容器标签
很多人以为 <li> 像 <div> 一样可以随意放东西,其实它本质是“项”的语义边界。嵌套的关键在于:子列表必须完整落在某一个 <code><li> 内部,而不是跟在它后面。
错误写法(结构断裂):
- 水果
- 苹果
正确写法(子列表属于“水果”这一项):
- 水果
- 苹果
- 香蕉
- 浏览器解析时,脱离
<li>的<ul></ul>会被移到外层,导致 DOM 层级错乱 - 无障碍阅读器依赖这种嵌套结构播报层级关系,写错会影响屏幕阅读体验
- CSS 选择器如
ul ul能匹配,但语义上它已不属于原列表的“子项”,而是兄弟节点
<li> 的闭合完整性与嵌套位置——它不像 <div> 那样宽容,错一丁点,整个列表结构就塌了。</div>










