本地正常,服务器部署后CSS font-family不生效问题求助
自定义字体部署后不生效的排查与解决
1. 修复@font-face的语法错误
你当前的@font-face写法存在问题——多个独立的src声明会被最后一条覆盖,浏览器只会尝试加载最后一个EOT格式的字体文件,而EOT格式在现代浏览器中支持有限,这大概率是字体不生效的核心原因。正确写法应该将多个字体源用逗号整合到同一个src中,同时添加font-display属性避免字体加载时的空白问题:
@font-face { font-family: 'iransans'; src: url('./webFonts/fonts/eot/IRANSansWeb.eot'); /* 兼容IE9 */ src: url('./webFonts/fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* 兼容IE6-IE8 */ url('./webFonts/fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* 现代浏览器优先加载 */ url('./webFonts/fonts/ttf/IRANSansWeb.ttf') format('truetype'); /* 兼容移动端 */ font-display: swap; /* 字体加载完成前用系统字体占位,避免空白 */ }
2. 验证服务器端字体路径的实际可访问性
即便本地路径正确,服务器的目录结构可能和本地存在差异:
- 打开浏览器控制台的Network标签,刷新页面后搜索字体文件名,查看HTTP状态码:
- 若显示404:说明路径有误,可尝试改用根路径写法(比如
/webFonts/fonts/...),避免相对目录层级带来的问题 - 若显示403:检查服务器上字体文件的权限设置,确保服务器进程有权读取这些文件
- 若显示404:说明路径有误,可尝试改用根路径写法(比如
3. 排查字体文件本身的问题
- 确认服务器上的字体文件和本地完全一致,没有上传损坏或不完整的文件
- 查看浏览器控制台的Console标签,若出现
Failed to decode downloaded font类警告,说明字体文件损坏或格式不被当前浏览器支持
4. 确认样式优先级与继承
虽然你添加了!important,仍可做以下检查:
- 在元素的Styles面板中,确认
font-family: iransans !important是最终生效的规则,没有被其他更具体的选择器覆盖 - 尝试将字体规则覆盖范围扩大到
html标签,确保全局生效:html, body, * { font-family: 'iransans' !important; }
内容的提问来源于stack exchange,提问作者davood beheshti
相关产品推荐
相关产品推荐

