用 background-image 替代 list-style 实现跨浏览器一致的列表符号:SVG 背景图 + background-position: left 0.35em center + padding-left: 1.5em,IE11 需双重 URL 编码。
ul/li 默认列表符号缩进不一致
不同浏览器对
的默认处理不同,
和
的缩进、行高、
实际渲染效果经常错位——尤其在 Chrome/Firefox/Safari 混合环境下,文字和圆点/数字的垂直对齐、水平间距肉眼可见地漂移。
直接改
或调
只会让问题更隐蔽: Safari 可能吃掉部分 padding,Firefox 对
的基线对齐又和 Chrome 不一样。
用
彻底剥离原生符号
把符号转成背景图,用
+
精确控制位置
统一用
预留符号空间,避免文字被遮挡或挤到右侧
用 background-image 模拟圆点且垂直居中
原生
在小字号(如 12px)下边缘模糊、粗细失真,换成 SVG 背景图既能抗锯齿,又能通过
和
锁定对齐基准点。
关键不是“怎么画个圆”,而是“怎么让它不随字体变化跑偏”——必须用
这类相对单位,
是经验偏移值(适配 14–16px 字号),
才真正实现垂直居中,比
或像素值可靠得多。
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
(预留空间,确保文字不顶到符号)
IE11 兼容时 SVG base64 要 URL 编码两次
IE11 解析 data URI 时会多解一层,如果只做一次
编码,SVG 标签里的
、
会直接崩成空白或报错
。
别信在线编码工具默认选项——必须确认它执行了双重编码(比如
,不是
)。本地调试时,打开 IE11 开发者工具 → Network → 查看实际请求头里的 background-image 值,看到
才算对。
用 Node.js 的
最稳
纯手写?先 encode 一遍,再把结果里的
替换为
避开 IE 的话,现代浏览器用单层编码 +
就够
伪元素方案比 background 更灵活但有陷阱
用
插入
看似简单,但 Unicode 圆点(
)在不同字体里宽度、高度、上下间距差异极大,微软雅黑和 Helvetica 下同一行
的基线可能差 2px。
更麻烦的是,
默认是 inline 元素,
设
在某些行高下仍会浮动;设
后又得手动调
和
偏移,一换字体全得重调。
优先用 SVG 背景图,可控性远高于字符
若必须用伪元素,
改用内联 SVG:
(注意同样要双编码)
禁用
继承,显式声明
防止系统字体干扰符号尺寸
CSS 列表符号对齐本质是基线+盒模型+渲染引擎三者博弈,细节藏在
的 em 偏移量、SVG 编码层级、以及是否禁用用户字体继承里。漏掉其中任意一环,都可能让“看起来差不多”变成“上线后集体偏移”。
list-style-positionullipadding-leftlist-style-typemargin-leftlist-style-imagelist-style: nonebackground-imagebackground-positionpadding-leftdiscbackground-sizebackground-positionbackground-position: left 0.35em center0.35emcentertopbackground-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Ccircle cx='3' cy='3' r='3' fill='%23333'/%3E%3C/svg%3E");background-repeat: no-repeat;background-position: left 0.35em center;padding-left: 1.5em;%、>'SyntaxError: Invalid character → %253C%3C%253CsvgencodeURIComponent(encodeURIComponent(svgString))%%25url("...")::beforecontent: "•"\2022li::beforevertical-alignmiddledisplay: inline-blockline-heighttopcontentcontent: url("data:image/svg+xml,...");font-familyfont-family: sans-serif;background-position