list-style: none 必须作用于 ul 或 ol 元素才生效,不能设在 li 上;还需重置 padding-left: 0 才能消除默认缩进,且不继承、不穿透嵌套列表。
直接用 list-style: none 就能去掉所有列表符号,但要注意它只影响当前元素本身,不继承,也不影响嵌套子列表的默认样式。
list-style: none 有时没生效?常见原因是选择器权重不够,或者样式被更具体的规则覆盖。比如:
ul { list-style: disc; },而你只对子 li 写了 list-style: none —— 这无效,list-style 必须写在 ul 或 ol 上才起作用!important 的第三方 CSS(如框架重置样式)可能压过你的规则ol 和 ul 行为不同,但 list-style: none 对两者都有效list-style 的三个组成部分怎么拆开用?list-style 是复合属性,等价于 list-style-type + list-style-position + list-style-image。单独控制更灵活:
list-style-type: none
list-style-position: inside 配合 padding-left: 0
list-style-image: url("data:image/svg+xml,..."),注意 base64 编码需转义li 还有缩进怎么办?浏览器默认会给 ul 和 ol 加 padding-left(通常 40px),这和列表符号是两回事。去掉符号后缩进还在,是因为 padding 没动:
立即学习“前端免费学习笔记(深入)”;
padding-left: 0 到 ul 或 ol
list-style-position: inside,li 文字会紧贴左边界,此时再设 padding-left: 0 更安全margin-left: 0,那对默认缩进没用最稳妥的一行写法是:ul, ol { list-style: none; padding-left: 0; }。嵌套列表要显式处理,因为 list-style: none 不会自动向下穿透到子 ul。