




最常见原因是未设置 content 或未声明正确的 font-family;伪元素需 content: "" 才渲染,font-family 必须与 @font-face 严格一致,避免父元素 font-size: 0 或 line-height: 0 导致图标不可见。
:before 添加字体图标后图标不显示最常见原因是没设置 content,或没声明 font-family 指向图标字体(如 "iconfont")。伪元素默认是 inline,若父元素设置了 font-size: 0 或 line-height: 0,图标也会被“压扁”不可见。
:before 必须带 content:
""(哪怕为空字符串),否则完全不渲染@font-face 中定义的 font-family 值严格一致,区分大小写font-size: 0;如需控制尺寸,单独给伪元素设 font-size
font-display: block 防 FOIT:before 插入具体图标字符(如 Font Awesome 或自定义 iconfont)以 iconfont.cn 下载的字体为例,需先引入 CSS,并确认图标 Unicode 编码(如 \e601)。注意:Unicode 值必须用反斜杠转义,且前面不能漏掉引号。
.btn-home::before {
content: "\e601";
font-family: "iconfont";
font-size: 14px;
margin-right: 6px;
}
)fa 字体族名 + 对应 Unicode(查官方 CSS 文件)margin-right 比 padding 更安全——避免影响文本行高或触发换行:before 和内联 SVG 哪个更适合图标前置纯 CSS :before 轻量、易复用,但无法动态变色(除非用 currentColor)、不支持多色图标、缩放时可能模糊。SVG 可直接设 fill、响应式缩放无损,但体积略大、CSS 控制粒度更细。
:before + 字体图标 或
:before,建议配 color: currentColor,让图标随文字色自动同步:before 本身 IE8+ 全支持,但字体图标在旧 Android(≤4.3)或 iOS Safari(≤9)中可能因字体格式(WOFF2)或渲染引擎问题显示为方块。
.woff 回退格式(@font-face 中按顺序声明,浏览器选第一个支持的)font-weight 或 font-style 修改图标——多数图标字体未定义这些变体,可能导致 fallback 到系统字体content 和 font-family,真正卡住的往往是字体加载时机、父容器的排版约束,还有那个你以为“只是装饰”的 line-height。