答案是设计合理字体回退链:优先按系统适配排序(如-apple-system、"pingfang sc"、"microsoft yahei"、sans-serif),中文字体名加引号,兜底通用族名不加引号,并确保表单元素显式继承或覆盖。

不是CSS写错了,而是系统字体栈天然不一致——Mac用font-family顺序逐个尝试,缺哪个就跳到下一个。
为什么“写了PingFang SC却在Windows上看到Times New Roman”
因为PingFang SC只存在于macOS,Windows根本找不到这个字体名,浏览器立刻回退到列表里下一个可用字体。如果后面没跟"Microsoft YaHei"或sans-serif,就可能一路退到默认serif字体(比如Times New Roman)。
-
font-family不是“指定一个字体”,而是“提供一个候选队列”,浏览器只选它能找到的第一个 - 中文字体名必须加英文双引号,漏掉
"PingFang SC"里的引号,会被拆成两个无效项:PingFang和SC - 表单控件(
input、textarea、button)默认不继承body的font-family,得单独写font-family: inherit
怎么写font-family才真正跨平台生效
关键不是堆名字,是按系统分布排优先级:macOS靠前放-apple-system和"PingFang SC",Windows紧接"Microsoft YaHei"和"Segoe UI",Linux补Ubuntu或WenQuanYi Micro Hei,最后必须收尾于sans-serif。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 推荐链:
-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Ubuntu, sans-serif - 中文优先项要放在英文前面,否则Windows可能先匹配到
Segoe UI再跳过中文部分 - 第三方UI库(如Element Plus、Ant Design)常带高权重字体规则,要用更具体选择器覆盖,比如
.el-input__inner
@font-face引入后还是不一致?检查这三件事
自定义字体加载成功≠渲染一致。即使woff2文件被正确加载,不同系统仍会因渲染引擎差异(Core Text vs DirectWrite)导致粗细、间距、抗锯齿效果不同。
- 确保
@font-face声明了多格式:按eot→woff2→woff→ttf顺序,IE、Safari旧版、Chrome/Firefox都能各取所需 - 加
font-display: swap避免FOIT(字体空白期),让系统字体先撑住,等自定义字体就绪再替换 - 别指望
-webkit-font-smoothing统一效果——它在Windows上基本无效,且对font-weight: bold文本自动失效
最易被忽略的点:字体加载完成不代表渲染完成;font-weight数值在不同系统映射的实际字重可能不同;哪怕用了同一套@font-face,Mac上的“Semibold”和Windows上的“600”视觉厚度依然可能差一档。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










