You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需JavaScript,如何根据用户配色偏好切换静态站点图片?

纯CSS实现深色/浅色模式下的图片适配方案

一、纯CSS指定明暗模式对应图片

无需重复插入两张图片,以下两种纯前端无JS方案可实现不同版本图片的自动切换:

1. 使用<picture>元素配合媒体查询

这是HTML原生支持的方案,浏览器会根据系统配色模式自动加载对应图片:

<picture>
  <!-- 深色模式加载的图片 -->
  <source media="(prefers-color-scheme: dark)" srcset="dark-image.jpg">
  <!-- 浅色模式加载的图片 -->
  <source media="(prefers-color-scheme: light)" srcset="light-image.jpg">
  <!-- 兼容不支持媒体查询的浏览器 -->
  <img src="default-image.jpg" alt="图片描述">
</picture>

2. CSS背景图结合prefers-color-scheme

如果图片作为背景使用,直接通过CSS媒体查询切换背景图即可:

.image-box {
  width: 300px;
  height: 200px;
  background: url('light-bg.jpg') center/cover no-repeat;
}

@media (prefers-color-scheme: dark) {
  .image-box {
    background-image: url('dark-bg.jpg');
  }
}

二、CSS调整图片亮度适配深色模式

对于无需换图的场景,可借助CSS的filter属性调整图片明暗、对比度等参数,快速适配深色模式:

/* 浅色模式默认样式 */
.adaptive-img {
  display: block;
  max-width: 100%;
}

/* 深色模式下调整视觉参数 */
@media (prefers-color-scheme: dark) {
  .adaptive-img {
    /* 降低亮度+提高对比度,适配多数图片 */
    filter: brightness(0.8) contrast(1.2);
    /* 线条/图标类图片可尝试反转颜色并保持原有色调 */
    /* filter: invert(1) hue-rotate(180deg); */
  }
}

这种方式无需额外存储图片文件,但效果取决于图片类型:插画、图标类调整后表现较好,摄影类图片可能还是换图更自然。

总结

完全不需要使用JavaScript,纯CSS(配合HTML原生元素)即可实现两种需求:要么切换不同版本的适配图片,要么通过滤镜调整现有图片视觉效果来适配深色模式。

内容的提问来源于stack exchange,提问作者Francisco de Javier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:15:31