【问题标题】:Is it possible to use a different favicon for browsers that support theme-color?是否可以为支持主题颜色的浏览器使用不同的图标?
【发布时间】:2018-10-01 00:44:55
【问题描述】:

有没有办法通过元标记或 manifest.json 为支持主题颜色的浏览器设置不同的网站图标?我有一个黑色的主题栏,但在桌面浏览器上使用的主要是黑色的图标。我希望有一个用于移动浏览器的备用白色图标,但我不想假设移动浏览器 === 主题颜色支持,因为情况并非总是如此。

桌面图标示例:

移动网站图标示例:

【问题讨论】:

    标签: html manifest meta-tags favicon


    【解决方案1】:

    可以通过prefers-color-scheme 媒体查询访问浏览器的主题。不幸的是,由于 favicon 不是页面元素,因此您不能使用 CSS 文件中的媒体查询来在两个图像之间切换。

    解决办法是把prefers-color-scheme和SVG结合起来,可以嵌入CSS。声明一个 SVG favicon:

    <link rel="icon" href="my_icon.svg">
    

    并在 SVG 本身中使用媒体查询:

    <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
      <style>
        circle {
          fill: yellow;
          stroke: black;
          stroke-width: 3px;
        }
        @media (prefers-color-scheme: dark) {
          circle {
            fill: black;
            stroke: yellow;
          }
        }
      </style>
      <circle cx="50" cy="50" r="47"/>
    </svg>
    

    来源tomoyac.com

    SVG favicon 仍然是一项高级功能。已经支持by Firefoxby Chrome,但其他浏览器do not support it yet

    【讨论】:

    • 深色主题的桌面浏览器怎么样?即:Firefox Developer、Chrome Canary 等中的暗模式?
    • 你的意思是有两个图标,一个用于浅色主题,一个用于深色主题,根据使用的主题选择合适的?
    • 是的,如果网站图标非常暗,最好将其设置为深色主题的浅色版本,反之亦然。看起来唯一一个标志出现半体面的深色主题浏览器是启用深色主题的 Mojave 上的 Safari。它用浅灰色矩形包围图标。它看起来不太好,但它确实有效。
    • 我明白了。纯 HTML 不支持此功能,这是您在为常规网站创建网站图标时所期望的那种材料。拥有基于用户代理的机制是不够的,因为主题是动态的(即你不能假设 Chrome == light)。所以这需要JS。为什么不?但这将是目前超出范围的额外功能。
    • ? 好的。我不会大惊小怪的。您可能想添加一个警告,即这个 only works 现在在 FF 中。 (预计 Chrome 会在 2 月份使用 in v80。)
    猜你喜欢
    • 2018-05-13
    • 2012-03-31
    • 2011-11-01
    • 2011-08-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多