Favicon Tools检测创建
PWA

Manifest 图标:Web App Manifest 中的 icons 数组

Manifest 图标是 web app manifest 里 icons 数组中的一个条目,manifest 是描述你网站被安装后形态的 JSON 文件。每个条目给出一个 src、一个 sizes 字符串、通常还有一个 type,以及可选的 purpose,浏览器会为主屏幕、应用启动器、任务切换器和启动画面各自挑选最贴近的匹配。最起码要声明一张 192x192 和一张 512x512 的 PNG。

这个数组是做什么用的

Web app manifest 是从你 head 中链接的一个 JSON 文件,它告诉浏览器当你的网站被安装后应当如何表现:它的名称、起始 URL、显示模式、主题色,以及它的图标。Manifest 图标是用在浏览器界面之外的那些:启动器、应用切换器、安装提示、启动画面。

与 favicon link 标签不同,这个数组是一份候选清单,而不是一组指令。你描述每个文件是什么,浏览器再按每个位置去选择。这意味着多声明条目的代价很低:在某个位置需要之前,什么都不会被下载。

一个最小的 manifest

{
  "name": "Example App",
  "short_name": "Example",
  "start_url": "/",
  "display": "standalone",
  "theme_color": "#0b0b0b",
  "background_color": "#ffffff",
  "icons": [
    { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" },
    {
      "src": "/icon-maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}

用 <link rel="manifest" href="/manifest.json"> 从 head 链接它。文件也可以命名为 manifest.webmanifest;关键在于 link 标签。

图标条目上的字段

字段作用
src图像的路径,相对于 manifest URL 解析。必填。
sizes以 "宽度x高度" 表示的尺寸,或用空格分隔多个以表示一个多尺寸文件。
typeMIME 类型,例如 image/png。让浏览器可以跳过它无法解码的格式。
purpose"any"(默认)、可安全裁剪图标用的 "maskable",或 "monochrome"。

Manifest 图标常见问题

为什么偏偏是 192 和 512?

192x192 是 Android 在常见屏幕密度下用于主屏幕图标的尺寸,512x512 是用于启动画面和安装提示的尺寸。两者合在一起就满足了 Chromium 浏览器的可安装性检查。

Manifest 图标会替代我的 favicon 吗?

不会。它们只覆盖已安装应用的那些位置。浏览器标签页、书签和历史记录仍来自你的 link rel="icon" 标签和 /favicon.ico,所以两者都要发布。

iOS 会读取 manifest 图标吗?

Safari 会读取 manifest 里像名称和显示模式这样的信息,但主屏幕图标来自 apple-touch-icon link。如果你想让图标在 iOS 和 Android 上都正确,就把两者都声明上。

相关术语