ul的type属性合法值仅有disc、circle、square三个字符串,分别对应实心圆点、空心圆圈、实心方块;该属性在HTML5中已被废弃,现代浏览器忽略它,应使用CSS的list-style-type替代。

ul 的 type 属性有哪些合法值?
type 属性只接受三个字符串值:disc、circle、square。它们分别对应实心圆点(●)、空心圆圈(○)和实心方块(■)。浏览器默认使用 disc,即使不写该属性也等效于 type="disc"。
注意:line、none、图片路径(如 type="bullet.png")等写法在任何 HTML 标准中都不是合法值,现代浏览器会直接忽略。
为什么写了 type 却没生效?
因为 CSS 的 list-style-type 会覆盖 HTML 的 type 属性。哪怕你写了 <ul type="square">,只要样式表里有类似 ul { list-style-type: disc; } 这样的规则,HTML 层面的 type 就完全失效。
- 检查开发者工具的「Computed」面板,确认最终生效的是哪一层样式
- 如果用 CSS 控制,优先删掉 HTML 中的
type属性,避免语义冗余和潜在冲突 -
type是 HTML4 遗留属性,HTML5 已将其标记为“过时(obsolete)”,W3C 明确建议用 CSS 替代
能否给单个 <li> 设置不同符号?
可以,但仅限于用 CSS 的 list-style-type 或 list-style-image 单独设置某个 <li> 元素——HTML 的 type 属性本身不支持作用于 <li> 标签(部分老文档误传,实际无效)。
立即学习“前端免费学习笔记(深入)”;
例如以下写法是无效的:
<li type="circle">不会变成空心圆</li>
正确做法是加类名再用 CSS:
<li class="special">自定义符号</li>
.special { list-style-type: circle; }
现在还该用 type 属性吗?
不该。它已失去实际价值:
- 所有现代浏览器都优先响应 CSS,
type只在纯 HTML 无样式场景下“可能”起作用 - 无法实现图标、渐变色、SVG 等复杂符号,而 CSS 的
list-style-image或伪元素::marker才能胜任 - 某些构建工具或 SSR 框架会自动 strip 掉过时属性,导致行为不可预期
真正需要控制列表符号时,直接写 CSS 更可靠、更灵活,也更容易维护。



















