li标签没有type属性,该属性仅曾属于ul(已废弃)和ol;控制符号必须作用于ul/ol元素,使用CSS的list-style-type属性,如square、circle等,且ul与ol的合法值不同,混用会被静默忽略。

li 标签根本没有 type 属性,别在 li 上写 type
很多人搜“li 的 type 属性”,但事实是:li 元素**压根没有 type 属性**。HTML 规范里它只属于 ol(历史上)和已废弃的 ul。你在 li 标签上写 type="square",浏览器会直接忽略——连警告都不给。
真正要控制图标(符号),操作对象永远是 ul 或 ol 元素本身,靠的是 CSS 的 list-style-type。
- 错误写法:
<li type="square">第一项</li> - 正确起点:
<ul style="list-style-type: square;"><li>第一项</li></ul> - 若用 JS 动态改,目标也是
ul元素:ulEl.style.listStyleType = 'circle'
list-style-type 值不是随便填,ul 和 ol 有各自合法范围
list-style-type 的值分语义阵营:有些只对 ul 有效,有些只对 ol 有效。填错不会报错,但会被静默忽略。
-
ul可用:disc(默认)、circle、square、none -
ol可用:decimal(默认)、lower-alpha、upper-alpha、lower-roman、upper-roman、none - 混用会失效:比如给
ul设list-style-type: upper-roman,Chrome/Firefox 会回退到disc;给ol设circle,直接无视 - 查是否生效:打开 DevTools → 选中
ul或ol→ 看 Styles 面板里该属性有没有被划掉
第三方框架(如 Bootstrap)会让 list-style-type 失效
很多 UI 框架默认把所有列表的 list-style-type 强制设为 none,目的是“清空原生样式便于重绘”。你写了 list-style-type: square 却没反应,大概率是被框架 CSS 覆盖了。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
立即学习“前端免费学习笔记(深入)”;
- 检查 computed styles,确认最终生效的
list-style-type值是谁写的 - 提高优先级办法:
ul.my-list { list-style-type: square !important; }(仅调试时用)或加更具体的选择器,如.content ul { list-style-type: square; } - 避免全局污染:不要用
ul { list-style-type: square; }这种通配,容易和框架冲突 - 注意继承陷阱:如果父容器设了
list-style: none,子ul不会自动继承list-style-type,但会继承整个简写值
真要自定义图标(比如小箭头、SVG、品牌符号),::marker 是目前最稳路径
当 disc/square 不够用,又不想用难控尺寸和对齐的 list-style-image,::marker 是现代方案:
- 兼容性已覆盖主流环境:Chrome 86+、Firefox 68+、Safari 15.4+
- 可精确控制内容、颜色、字体:
ul.custom li::marker { content: "→ "; color: #007bff; font-size: 1.1em; } - 支持动态生成(配合
counter())或插入 Unicode 符号(如"• "、"▪ ") - 关键限制:不能设置背景、边框、transform;若需复杂图形,仍得回退到
list-style-image+ SVG 内联 URL
符号渲染受字体影响大,同一段 content: "■ " 在不同系统上可能大小不一、上下偏移——这是 CSS 列表样式至今没彻底标准化的遗留问题。


















