如何根据 CSS prefers-color-scheme 更改图像源?

Posted

技术标签:

【中文标题】如何根据 CSS prefers-color-scheme 更改图像源?【英文标题】:How to change image source based on CSS prefers-color-scheme? 【发布时间】:2019-09-11 05:16:00 【问题描述】:

我正在尝试将新的 CSS prefers-color-scheme 媒体查询集成到我的网站中。我有一个img (image) 元素,其中的图像是very 深蓝色。新的暗模式设置看起来真的很糟糕。

有没有一种方法可以根据 CSS 媒体查询轻松更改此图像的来源?

我考虑过使用 2 个 img 元素并将 display 设置为隐藏或不隐藏,具体取决于该媒体查询。但这感觉有点像一个混乱的解决方案,并且有它的缺点,例如浏览器下载两个图像。

我也考虑过使用 background-image 做一个 CSS 技巧,但我更反对使用 2 个 img 元素并隐藏和显示它们。

最后,我当然认为这可以使用 javascript。但是这个网站我特别考虑兼容性,有些浏览器允许用户一起关闭 JavaScript,所以在这种情况下我不喜欢 JavaScript 解决方案。

除了上面列出的那些解决方案之外,还有其他方法可以在这里做我想做的吗?

【问题讨论】:

请分享代码 你的情况可能很有趣:***.com/questions/12158540/… 【参考方案1】:

根据WebKit blog你可以使用htmlpicture标签来实现这个行为。

当配色方案设置为深色时,类似以下代码的代码设置为使用night.jpg,但默认为day.jpg

<picture>
    <source srcset="night.jpg" media="(prefers-color-scheme: dark)">
    <img src="day.jpg">
</picture>

【讨论】:

以上是关于如何根据 CSS prefers-color-scheme 更改图像源?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户输入创建动态 CSS

如何根据屏幕宽度计算 CSS 缩放因子?

如何根据客户端的验证错误添加和删除 CSS 类?

如何根据屏幕大小改变class的css样式

如何根据子节点删除父节点和/或 css 样式

使用 CSS,如何根据我悬停的单元格更改表格行的背景颜色?