你有没有注意到,像 GitHub 或 Stripe 这样的网站,当你把它们保存到 Android 主屏幕时,图标看起来完美无缺,而你自己的项目却只是一个缩在白色圆圈里的小图标?这种视觉上的差距通常是由缺失或配置错误的 favicon site.webmanifest 文件造成的。它是连接你的网站与移动操作系统之间的无形桥梁。

在 2026 年,仅仅在根目录丢一个 favicon.ico 就像是穿着人字拖去参加晚宴。虽然能进去,但大家都知道你没看邀请函。Web Manifest 是一个简单的 JSON 文件,告诉浏览器你的“应用”在用户设备上应该长什么样。虽然我们之前讨论过 Web App Manifest Favicon 指南,但今天我们将专门探讨用于 favicon 优化的 site.webmanifest 文件的技术实现。

一个完美的 site.webmanifest 的解构

在编写代码之前,你需要准备好素材。你不能只用一个 16x16 的图标就指望万事大吉。现代移动设备拥有极高的像素密度,需要更大、更清晰的图像。(相信我,模糊的图标比没有图标更糟糕)。通常,你需要 192x192 和 512x512 的 PNG 图片作为基准。

在根目录下创建一个名为 site.webmanifest 的文件。这是我为 2026 年推荐的标准结构:

{
  'name': '我的酷炫项目',
  'short_name': '项目',
  'icons': [
    {
      'src': '/android-chrome-192x192.png',
      'sizes': '192x192',
      'type': 'image/png'
    },
    {
      'src': '/android-chrome-512x512.png',
      'sizes': '512x512',
      'type': 'image/png'
    },
    {
      'src': '/maskable-icon-512x512.png',
      'sizes': '512x512',
      'type': 'image/png',
      'purpose': 'maskable'
    }
  ],
  'theme_color': '#ffffff',
  'background_color': '#ffffff',
  'display': 'standalone'
}

第一步:正确定义你的图标

icons 数组是奇迹发生的地方。注意到 purpose: 'maskable' 了吗?这在 2026 年是必须的。Android 使用不同的形状(圆形、方形、圆角矩形)来显示图标。如果你不提供可遮罩图标(maskable icon),系统会强制给你的 logo 套上一个丑陋的白边。可遮罩图标应该在 logo 周围留出一定的安全边距,以便被裁剪时不会丢失核心部分。

第二步:在 HTML 中链接 Manifest

浏览器不会读心术。你必须告诉它在哪里可以找到这个配置。在 HTML 文档的 <head> 中添加这一行:

<link rel='manifest' href='/site.webmanifest'>

我见过一些开发者把它放在 head 的最底部,但我更喜欢把它放在靠近顶部的地方,紧跟在字符集和 viewport 标签之后。这确保了浏览器能尽早开始获取清单。如果你对它与其他标签的配合仍感困惑,可以参考我们的 2026 Favicon 最佳实践。

第三步:主题色与背景色

theme_color 属性控制移动端浏览器地址栏或状态栏的颜色。background_color 则用于从主屏幕启动网站时显示的启动页(splash screen)。确保这些颜色符合你的品牌主色调。如果你的 logo 是深色的,白色背景通常是最稳妥的选择。

常见坑点

配置 favicon site.webmanifest 看起来像是为了一个小细节在做额外工作,但正是这些细节区分了专业产品和业余项目。它只需要五分钟配置,却能确保你的品牌在 Chrome 标签页或用户主屏幕上始终如一。如果你觉得调整各种尺寸太麻烦,Mzu favicondl 这样的工具可以帮你搞定缩放和格式转换,让你专注于代码本身。