css 如何更改Hugo-Coder头像的基础上,如果黑暗模式启用?

t3irkdon  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(149)

环境背景

  • 我目前正在建设一个网站在雨果使用主题Hugo-Coder
  • avatar.png是我在config.toml中指定的当前头像

问题汇总

  • config.toml中,您可以通过添加以下内容来启用暗模式:colorscheme = "auto"
  • 这启用了黑暗模式,但我的头像显示不好,因为它是黑色的

需要解决方案

  • 我需要一种方法来改变avatar.pngavatarDarkMode.png的基础上,如果用户的系统设置为亮或暗模式

希望我能提供足够的信息!
源代码存储库:GitHub Repo

ymdaylpp

ymdaylpp1#

您可以考虑使用类似于onweru/newsroom中使用的短代码:
图片您想在设备上启用暗模式时使用暗模式图像,而在亮模式下使用常规图像?它需要3个位置参数
将这些图像存储在static/images目录中。

...
{{< picture "lightModeImage.png" "darkModeImage.png" "Image alt text" >}}
...

它使用layouts/shortcodes/picture.html

{{- $normal := .Get 0 }}
{{- $dark := .Get 1 }}
{{- $alt := .Get 2 }}
{{- $normalPath := absURL (printf "images/%s" $normal) }}
{{- $darkPath := absURL (printf "images/%s" $dark) }}
<picture class = 'nav_logo'>
  <source srcset = '{{ $darkPath }}' media="(prefers-color-scheme: dark)">
  <img srcset = '{{ $normalPath }}' alt = '{{ $alt }}'>
</picture>

SVG文件怎么样?
有没有办法改变SVG文件的样式,而不是创建两个不同的SVG图像,一个用于暗模式,一个用于亮模式?
对于SVG,您可以尝试CSS媒体查询
您可以使用CSS媒体查询来检测用户是否在其操作系统或浏览器中启用了浅色或深色主题,然后相应地将不同的样式应用于SVG。
例如:

@media (prefers-color-scheme: dark) {
   svg {
       filter: invert(1);
   }
}

相关问题