你需要的只有 5 个图标和一个 JSON 文件,而不是十几个图标
在你的 HMTL 中添加这些:
并且在你的 web app manifest 中添加这些:
这样一切就做完了。如果你想知道我是如何做出这个结论的,对此我做出的妥协,以及如何从零开始一步步制作这样的图标包,请继续阅读下去。
favicon 这个概念,是「favorite icon」的简称,从2000年初便出现了。我们每天都可以在浏览器的标签页上看到这些可爱的小图片,它们可以帮助我们区分打开的不同网站。用户会希望你的网站有一个 favicon。这就是那些让别人认真看待你的小事情中的一件。
即便一直以来不喜欢那些不是源于 Cupertino 的图标设计且多年来在 Safari 中淡化 favicon 存在的 Apple 公司,也终于放弃了先前的行为,现在在所有设备上正确显示 favicon 了。
如果你有个面向公众的网站,那么它必须有一个 favicon。遗憾的是,用户所感知到的一个图标的背后其实是很多个图标。
因此,大家通常会把为不断增加的屏幕和设备列表生成必要文件的艰巨任务交给 favicon 生成工具。没有正常人会花好几小时去手动创建这些文件。我们是为了搭建网站,而不是为了让浏览器厂商开心。
作为 NanoID 的作者和极简开源的拥护者,我倾向从稍微不同的方向思考。什么样的网站图标集是最有效的?有哪些格式是过时的?有哪种类型的图标能够以最小的代价替换?
所以我开始创建一套最小的 favicon 集,它能够在所有情况下和所有浏览器中正常工作,除了一些边缘情况,但它仍可以工作,只是没有 100% 完美。
与其创建不同大小的图片,我决定依靠 SVG 及浏览器缩放。如果你在意性能表现,这儿是我的解释:
这就是我在研究和实践中得出的最小图标集。它应该可以在所有流行的浏览器和设备中正常工作。
ICO 文件其实有个目录结构可以打包不同分辨率的文件。我建议仅使用单张 32×32 的图片,除非你的图片不能很好的缩放到 16×16(比如变得更模糊)。在这种情况下,你可以要求你的设计师制作一个特殊版本的 Logo 以适应小像素网格。
不要自作聪明地用文件夹结构存放静态文件和 cache busters。网站 应该有一个 favicon 位于 。有些工具,例如 RSS 阅读器只会从服务器请求 ,而不会去其他地方请求了。
SVG 是一种描述曲线而不是像素点的矢量格式。在大尺寸图片中,它比栅格图片更高效。在本文写作时,有 72% 的浏览器支持 SVG 格式。
你的 HTML 页面 中应该有个 标签,标签的属性是 , 且 指向 SVG 文件的链接。
SVG 是一种可以包含 标签来描述 CSS 的 XML 格式。和任何的 CSS 一样,它可以包含媒体查询,比如 。这样允许你使用同个图标在浅色和深色系统主题之间切换。
Apple touch icon 是一个 Apple 设备会在你添加网页到 iPhone 或 iPad 屏幕快捷方式时使用的图片。你的 HTML 页面 中应该有个 标签。
iPad 自 iOS 8 之后要求 180×180 的分辨率。其他设备会对图片进行缩放,但如果我们提供的质量够高的源文件,缩放便不会对终端用户造成伤害(后面我会再讲)。
小笔记:如果你添加为 Apple touch icon 添加 的 padding 和添加背景色,它观感会更好。你可以使用任何图片编辑器做到这点。
当然,favicon 还有更多的类型,其中一些相当隐晦,让我们来看看我们的设置如何取代它们。也许是时候向一些不太成功的格式说再见了。
Microsoft Edge 曾经支持一种特殊的图标格式,用于将网站固定到开始菜单时使用。对于最近版本的 Windows 已经不再需要这样做了。
Safari 曾经对 pinned tab 显示的图标有一个独立于 favicon 的要求。但是,自从 Safari 12 之后,我们可以在 pinned tab 上使用一般的 favicon。即便是 apple.com 也不再使用 了。
许多(过时的)教程会像这样子在 HTML 中引入 :
请注意, 不是,出来不是有效的 link relation。读 Mathias Bynens 在十年前的这篇文章,它向我们解释了为什么不需要 ,只要使用 就够了。
Yandex 浏览器是俄罗斯最大的搜索引擎开发的基于 Chromium 的浏览器,它拥有 20% 的市场份额。它有一个很好的功能,允许网站通过 链接特殊的 JSON 表单在主屏幕显示实时数据。然而,事实证明,这个功能并不是很受欢迎,现在 Yandex 已经从其网站上删除了它的技术文档。常规的图标表单也能正常工作。
Opera Coast 是 iOS 上的实验性浏览器,曾经需要一个特殊的 228×228 的图标。这个浏览器已经于 2017 年从 App Store 上下架,所以我怀疑它是否能在从那之后的多次 iOS 更新中幸存下来。
现在,我们已经向这些逝去的同志挥手告别了,让我们来看看如何为那些健在的同志制作一套终极的 favicon 集。
以下是如何通过六个快速的步骤创建我们终极的极简 favicon 集。开始这些所需要的东西只有你想用来作为 logo 的 SVG 文件。
确保你的 SVG 图像是正方形,用图片浏览器打开你的源文件检查图像的长宽。SVG 的大小可以轻易地通过 SVG 编辑器调整。在 [Inkscape] 中,你可以在文件 → 文档属性中修改文件大小,可以在对象 → 对齐与分散中使 logo 居中放置。
用 保存你的文件。现在让我们来折腾一下我们的 SVG,让它更好地适应现代的系统主题。问一下你的设计师,在深色主题下颜色要如何反转(如果是黑白色的 Logo,你只需要把黑色改成白色)。
现在用文本编辑器打开你的 SVG 文件。找到暗色的或者没有 的 。添加在主题变化时触发的 CSS 媒体查询并且修改 为你想要的颜色:
在栅格图像编辑器中打开你的 SVG 文件。我推荐使用 GIMP;它免费开源且支持多平台。
在导入时将 SVG 渲染为光栅图像。设置宽度和高度为 32px。将文件导出为 ,导出的图标细节选择 32bpp,8 位 alpha,无调色板选项。
如果你没有 GIMP 的话可以安装 Inkscape 和 ImageMagick,然后在终端里将 SVG 转为 ico:
将图片缩放到 16×16 并检查图标是否清晰。如果变得太模糊,最好是去找你的设计师制作一个微缩版本的 logo。
将另外的 16×16 版本包含进图标里:
或者你可以通过 ImageMagick 做一样的事情:
再一次在栅格图像编辑器中打开你的 SVG 原文件,并且创建一个 512×512 的图片并导出为 。再将图片缩放到 192×192 并导出为 。最后将图片本身缩放到 140×140 并将画布设置为 180×180,将它导出为 。
或者你可以用 Inkscape 做一样的事情:
优化 SVG 的最好工具是 SVGO。使用方法:
Squoosh 是一个强大的栅格图片网页优化工具。
为 和 重复以上步骤。
你需要将 和 用 link 添加到你的 HTML 中。
静态 HTML:
但是,我们更推荐使用 bundler 生成 cache busters(将文件的 hash 包含在名称中作为指纹)。如果你使用 Webpack 和 []:
使用不同的 favicon 是个区分生产环境和测试环境的好方法。我发现在测试环境中使用替代图标是避免造成高昂代价混乱的一个超级有效的方法。
创建一个相同现状但是反转了颜色(或者用任何你能区分的方法)的 logo,将其命名为 。对 SVG 文件也做同样的处理,创建并命名为 。
使用 条件判断替代模板中的图标:
对于静态 HTML,创建个 JSON 文件并命名为 即可:
链接到 HTML 中:
使用 Webpack 的话,你可以使用 webpack-pwa-manifest 插件:
谢谢你阅读这篇文章!如你所见,使用现代的 web 标准后,创建一个终极 favicon 集的任务也变得相当直接了。即使你跟着上面的步骤动手制作也不会花多少时间,但如果有个自动化工具会让这件事更加 amazing!如果你愿意制作这样子的工具的话请通过 Twitter 与我联系;我会非常高兴帮助你!
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.xrbh.cn/tnews/1422.html