当前位置: 首页 > 面试题库 >

HTML 5 Favicon-支持吗?

上官斌
2023-03-14
问题内容

我正在阅读Wikipedia上的Favicon页面。他们提到了Favicon的HTML 5规范:

当前的HTML5规范建议使用标签内的属性rel =“ icon” size =“以空格分隔的图标尺寸列表”,以多种尺寸指定尺寸图标。来源
]可以通过将图标的内容类型以type =“ file content-type”的形式包含在图标中,来提供多种图标格式,包括诸如Microsoft
.ico和Macintosh .icns文件之类的容器格式,以及可伸缩矢量图形。标签

查看引用的文章(W3),他们显示了以下示例:

<link rel=icon href=favicon.png sizes="16x16" type="image/png">
<link rel=icon href=windows.ico sizes="32x32 48x48" type="image/vnd.microsoft.icon">
<link rel=icon href=mac.icns sizes="128x128 512x512 8192x8192 32768x32768">
<link rel=icon href=iphone.png sizes="57x57" type="image/png">
<link rel=icon href=gnome.svg sizes="any" type="image/svg+xml">

我的问题是任何浏览器都支持HTML 5方法吗?

注意:我知道Apple apple-touch-icon在HTML5方法上使用了元标记方法。

维基百科文章声称:

但是,当用户从“工具”菜单中选择“创建应用程序快捷方式…”时,Google
Chrome浏览器将从HTML标头中提供最匹配的尺寸,以创建128×128像素的应用程序图标。

InternetExplorer(从v9到v11)和Firefox如何处理?而且Chrome浏览器如何处理HTML网站图标是否正确?(没有引用Chrome的消息来源对此进行确认。)

在搜索中,除了Wikipedia文章之外,我无法真正找到有关HTML 5 Favicon的任何(可信的)信息。


问题答案:

提供的答案(在撰写本文时)仅是链接的答案,所以我想我将这些链接汇总成一个答案以及我将使用的答案。

在创建跨浏览器网站图标(包括触摸图标)时,需要考虑几件事。

第一个(当然)是Internet Explorer。IE直到版本11才支持PNG图标。因此,第一行是IE 9及以下版本中图标的条件注释:

<!--[if IE]><link rel="shortcut icon" href="path/to/favicon.ico"><![endif]-->

为了涵盖图标的用途,请以32x32像素创建它。注意rel="shortcut icon"IE可以识别图标,它需要shortcut非标准单词。同样,我们将.icofavicon
包装在IE条件注释中,因为.ico尽管存在其他可用选项,但Chrome和Safari仍会使用该文件(如果存在),而不是我们想要的。

以上内容涵盖了IE 9之前的IE。IE11接受PNG图标,但是IE 10则不接受。IE 10也不会读取条件注释,因此IE 10不会显示收藏夹图标。在IE
11和Edge可用的情况下,我看不到IE 10被广泛使用,因此我忽略了此浏览器。

对于其余的浏览器,我们将使用标准方式来引用图标。

<link rel="icon" href="path/to/favicon.png">

此图标的大小应为196x196像素,以覆盖可能使用此图标的所有设备。

为了覆盖移动设备上的触摸图标,我们将使用苹果专有的方式来引用触摸图标:

<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">

rel="apple-touch-icon- precomposed"在iOS上加书签时,使用不会应用反射光。要让iOS应用闪耀用途rel="apple-touch- icon"。此图标的大小应为180x180像素,这是Apple为最新iPhone和iPad建议的当前大小。我读过Blackberry也会用rel="apple- touch-icon-precomposed"

注意:Chrome for Android指出:

apple-touch- *已过时,仅在短时间内受支持。(写于测试版的m31 Chrome)。

Windows 8.1+上IE 11+的自定义图块

Windows 8.1+上的IE 11+确实提供了一种为您的站点创建固定图块的方法。

Microsoft建议创建以下大小的图块:

小:128 x 128

中:270 x 270

宽:558 x 270

大:558 x 558

这些应该是透明的图像,因为我们接下来将定义彩色背景。

创建这些图像后,您应该browserconfig.xml使用以下代码创建一个xml文件:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
  <msapplication>
    <tile>
      <square70x70logo src="images/smalltile.png"/>
      <square150x150logo src="images/mediumtile.png"/>
      <wide310x150logo src="images/widetile.png"/>
      <square310x310logo src="images/largetile.png"/>
      <TileColor>#009900</TileColor>
    </tile>
  </msapplication>
</browserconfig>

将此xml文件保存在网站的根目录中。固定网站后,IE会寻找该文件。如果您想用其他名称来命名xml文件或将其放在其他位置,请将此meta标记添加到head

<meta name="msapplication-config" content="path-to-browserconfig/custom-name.xml" />

有关IE 11+自定义图块以及使用XML文件的其他信息,请访问Microsoft网站

放在一起:

综上所述,以上代码如下所示:

<!-- For IE 9 and below. ICO should be 32x32 pixels in size -->
<!--[if IE]><link rel="shortcut icon" href="path/to/favicon.ico"><![endif]-->

<!-- Touch Icons - iOS and Android 2.1+ 180x180 pixels in size. --> 
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">

<!-- Firefox, Chrome, Safari, IE 11+ and Opera. 196x196 pixels in size. -->
<link rel="icon" href="path/to/favicon.png">

Windows Phone动态磁贴

如果用户使用Windows
Phone,则可以将网站固定到其手机的开始屏幕。不幸的是,当他们这样做时,它显示的是您手机的屏幕截图,而不是收藏夹图标(甚至不是上面引用的MS特定代码)。要为您的网站的Windows
Phone用户制作“动态图块”,必须使用以下代码:

这是来自Microsoft的详细说明,但这是一个提要:

步骤1

为您的网站创建一个正方形图像,以支持高分辨率屏幕,并以768x768像素大小创建它。

第2步

添加此图像的隐藏的覆盖。这是来自Microsoft的示例代码:

<div id="TileOverlay" onclick="ToggleTileOverlay()" style='background-color: Highlight; height: 100%; width: 100%; top: 0px; left: 0px; position: fixed; color: black; visibility: hidden'>
  <img src="customtile.png" width="320" height="320" />
  <div style='margin-top: 40px'>
     Add text/graphic asking user to pin to start using the menu...
  </div>
</div>

第三步

然后,您可以在下面的行中添加w,以添加用于启动链接的引脚:

<a href="javascript:ToggleTileOverlay()">Pin this site to your start screen</a>

Microsoft建议您检测Windows Phone,仅将链接显示给那些用户,因为该链接对其他用户不起作用。

第四步

接下来,您添加一些JS来切换叠加层的可见性

<script>
function ToggleTileOverlay() {
 var newVisibility =     (document.getElementById('TileOverlay').style.visibility == 'visible') ? 'hidden' : 'visible';
 document.getElementById('TileOverlay').style.visibility =    newVisibility;
}
</script>

注意尺寸

我使用一种尺寸,因为每个浏览器都会根据需要缩小图像。如果需要较低的带宽,我可以添加更多HTML以指定多个大小,但是我已经使用TinyPNG大量压缩了PNG文件,我发现这对于我的目的是不必要的。
Chrome和Firefox的错误会导致浏览器加载所有大小的图标。因此,使用一个大图标可能比使用多个小图标更好。



 类似资料:
  • 对于Requests,如果你有问题或者建议,可以通过下面几种方法得到支持: StackOverflow 如果你的问题不包含敏感或私有信息,或者你能将这些信息匿名化,那你就可以在 StackOverflow 上使用 python-requests 标签提问。 发送推文 如果你的问题在140个字符内描述,欢迎在 twitter 上发送推文至 @kennethreitz, @sigmavirus24,

  • Jython 是在 Java 平台 (JVM) 运行的 Python 实现。这个文档将让你在Jython之上运行Django。 Installing Jython Django使用Jython 2.7b2及更高版本。有关下载和安装说明,请参阅Jython网站。 Creating a servlet container 如果你只是想试验Django,请跳到下一节; Django包含一个可以用于测试的

  • Babel 的社区非常庞大并且增长速度很快,伴随着我们成长的同时我们希望保证人们总能获取他们需要的所有资源。 所以我们提供了数种途径来提供支持。 谨记在所有的这些沟通渠道里我们都共同遵守一套行为准则。 破坏准则的行为会被处理。 所以请阅读它并在与他人互动时注意自己的行为。 同时我们也在寻求发展一个自我支持式的社区,为那些始终热诚奉献的人们。 如果别人问的问题你恰好知道答案,请不吝花费几分钟帮帮他们

  • 如何让Java8与Eclipse一起工作? 我遵循了这个指南,但不起作用。我也看过EclipseJava8维基页面,但是他们没有解释如何处理签出的git存储库。

  • suEXEC特性使得Apache可以使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序。而通常情况下,CGI或者SSI程序执行时使用和web服务器相同的用户身份。 正确运用该特性,可以减少很多因为提供用户执行私有CGI或者SSI程序所带来的安全风险。但如果配置不当的话,则可能引起很多问题,使你的计算机产生更多的安全漏洞。如果你对管理 setuid root 程序以及可能导致的安全问

  • 有些项目的代码组织中使用了 git submodule 功能,但是如果某个项目引用的 submodule 是私有的,会导致代码构建/持续集成时拉取代码失败。这时可以参考下面的流程进行操作达到支持私有 submodule 的目的。 下面的例子以 Github 为例 创建项目 按照正常流程创建代码构建项目,在项目“设置”页面可以查看 Deploy Key。 复制 Deploy Key 点击如下所示红框

  • 写测试用例都很头疼,然而对核心方法的单元测试是非常重要的. nutz-plugins-mock 提供了 Ioc支持,Mvc环境, Servlet Mock对象 基本用法 添加依赖 <dependency> <groupId>org.nutz</groupId> <artifactId>nutz-plugins-mock</artifactId>

  • 什么是TypeScript TypeScript 是 JavaScript 的强类型版本,就然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会带来兼容性问题。 TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法