哦哦!来自 Thomas Steiner 的 一个真正的技巧。Chrome 将很快支持 SVG favicon(例如 )。并且您可以在带有
的 SVG 中嵌入 CSS
<style>
元素。该 CSS 可以使用 prefers-color-scheme
媒体查询,从而实现支持深色模式的 favicon!
<
pre rel=”HTML”>
<
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>
Safari 也支持 SVG,但它有所不同……
您指定颜色,因此没有机会用于深色模式。这有点令人惊讶,因为 Apple 在深色模式方面投入了如此之多。我不知道他们是否计划解决这个问题或其他什么。
我不明白。HTML 中是否支持新的 SVG 元素和圆形元素?
Svg 可以嵌入到 html 中并使用 css 进行样式设置。本文演示的是,您可以使用媒体查询
prefers-color-scheme: dark
直接在 .svg 图像文件中编写 css,这可以更改图像的样式(即使用作 favicon)您可以在 JavaScript 中修改
link
标签上的color
属性吗?或者这不起作用?有没有办法动态响应深色/浅色主题更改 - 而不刷新页面?
依我之见,这个“深色模式”过头了!
对于 Safari,您不能这样做吗?
<link rel="mask-icon" href="/favicon.svg" color="lighthex" />
<link rel="mask-icon" href="/favicon.svg" color="darkhex" media="(prefers-color-scheme: dark)" />
这会增加一行标记,但您可以将媒体查询传递到 link 标签上的“media”属性中。
https://mdn.org.cn/en-US/docs/Web/HTML/Element/link#attr-media
喜欢它。简短而甜蜜!
我注意到,虽然此方法符合操作系统的默认主题,但如果浏览器将主题设置为相反的主题,例如深色模式操作系统中的浅色主题浏览器,则 favicon 仍遵循操作系统,并忽略浏览器的主题。
如果您可以为浅色和深色定义一组 favicon,那么浏览器可以选择最适合正在使用的主题的那个,那就太好了。
注意,一个活动的 Chrome 错误(https://bugs.chromium.org/p/chromium/issues/detail?id=1311553&q=dark%20mode%20favicon&can=2)已破坏了它。