html的type属性在ol和ul中已过时,不能依赖;应使用css的list-style-type属性,其基础值(如disc、decimal等)全浏览器兼容,扩展值(如armenian)在旧版safari、ie9等中无效。

HTML type 属性在 ol 和 ul 中还能用吗
不能依赖它。HTML 的 type 属性在 ol 和 ul 上早已被标记为“过时(obsolete)”,现代浏览器虽仍解析,但行为不稳定,且完全不支持 CSS 优先级、响应式或动态修改。
常见错误现象:在 ul 上写 type="square",Chrome 可能显示方块,Safari 却回退到实心圆;ol type="i" 在某些移动端 WebView 中直接忽略,始终显示阿拉伯数字。
-
ol支持的type值:"1"(默认)、"A"、"a"、"I"、"i" -
ul支持的type值:仅"disc"、"circle"、"square"(IE6–8 时代遗留,现代标准不保证) - 所有其他值(如
"decimal-leading-zero"或"lower-greek")在type属性中无效,会被静默丢弃
list-style-type 哪些值是真正跨浏览器安全的
只用基础值,就能覆盖 99% 场景且零兼容问题。扩展值(如 cjk-ideographic、armenian)在 Safari 15.4 之前、旧版 Edge 或部分国产内核中根本不渲染,审查元素里会直接划掉该声明。
- 无序列表安全值:
disc、circle、square、none - 有序列表安全值:
decimal、lower-alpha、upper-alpha、lower-roman、upper-roman -
none要配padding-left: 0或margin-left: 0才真“清空”缩进,否则只是隐藏符号、留白还在
为什么给 li 写 list-style-type 没反应
因为该属性只作用于列表容器——ul 或 ol 元素本身。写在 li 上,浏览器会直接忽略,DevTools Styles 面板里这条声明会被划掉,不报错也不生效。
- 正确写法:
ul { list-style-type: square; } - 想让某个
li不同?只能用::marker(现代浏览器支持)或list-style: none+li::before { content: "→"; } - 注意:
::marker不支持背景、border 等复杂样式,纯文本内容或简单 Unicode 符号更稳
用 list-style 简写时最容易踩的坑
顺序错了整个声明就废。它必须是 list-style-type → list-style-position → list-style-image,缺一不可,且位置不能互换。
- 合法:
ul { list-style: square inside; }(inside自动识别为 position) - 非法:
ul { list-style: inside url(bullet.png); }(缺 type,浏览器无法 fallback,最终可能回退到disc outside none) - 图像路径失效时,不会报错,而是静默使用你显式写的
list-style-type值;如果连这个都没写,就回退到默认disc
真正容易被忽略的是:一旦用了 list-style 简写,所有未写出的子属性都会重置为初始值——比如漏了 list-style-position,就会从你原本设的 inside 强制变回 outside。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











