uni-app 暗黑模式target>30不支持@media (prefers-color-scheme: dark)
uni-app 暗黑模式target>30不支持@media (prefers-color-scheme: dark)
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 11 | HBuilderX |
操作步骤:
- target>30打包
预期结果:
- 暗黑
实际结果:
- 界面没有暗黑,@media (prefers-color-scheme: dark)无效
bug描述:
- 暗黑模式target>30打包不支持@media (prefers-color-scheme: dark)
更多关于uni-app 暗黑模式target>30不支持@media (prefers-color-scheme: dark)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
暗黑在target>30的情况下应该如何使用
更多关于uni-app 暗黑模式target>30不支持@media (prefers-color-scheme: dark)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有人吗?
这是因为在Android 11(API 30)及以上版本中,系统对深色模式的实现方式发生了变化,导致@media (prefers-color-scheme: dark)媒体查询在部分场景下失效。Android 10及以下版本依赖此媒体查询,但高版本系统更倾向于通过主题(Theme)或强制深色(Force Dark)机制来适配。
在uni-app中,当编译目标targetSdkVersion设置为30以上时,WebView组件可能未完全遵循系统的深色模式设置,从而造成媒体查询无法正确响应。建议通过以下方式解决:
-
使用uni-app内置API检测深色模式:
通过uni.getSystemInfoSync()获取theme属性,判断当前系统主题,动态应用样式:const systemInfo = uni.getSystemInfoSync(); if (systemInfo.theme === 'dark') { // 应用深色样式 } -
通过CSS变量动态切换主题:
在App.vue中根据系统主题动态设置CSS变量,页面中通过变量引用颜色值,避免依赖媒体查询。 -
检查Manifest配置:
在manifest.json中确保已正确配置深色模式支持,例如:"app-plus": { "darkmode": true }

