H5项目适配系统深色模式方案总结
文章目录
- 一、背景
- 二、问题
- 三、H5项目适配深色模式方案
- 1.声明 color-scheme
- 1.1meta
- 1.2CSS
- 2.通过 CSS 媒体查询
- 3.图片适配
- 4. JavaScript中判断当前模式&监听模式变化
- 4.1matchMedia
- 4.2addListener()
- JavaScript监听判断
- 四、嵌入app的H5页面
一、背景
随着 iOS 13 的发布,深色模式(Dark Mode)越来越多地出现在大众的视野中,支持深色模式已经成为现代移动应用和网站的一个潮流,前段时间更是因为微信的适配再度引起热议。深色模式不仅可以大幅减少电量的消耗,减弱强光对比,还能 提供更好的可视性和沉浸感。
如何切换深色模式
iOS:“设置”–“显示与亮度”–“外观”,选择“深色”
Android:“系统设置”–“显示”–“深色模式”。
二、问题
如果系统设置了深色模式,H5页面不做相应的处理,会出现背景色冲突、深色文字显示异常,深色图标显示异常等一些显示上的问题。
所以,需要对深色模式进行一些适配。
我尝试了一些方案:
三、H5项目适配深色模式方案
1.声明 color-scheme
color-scheme
有两种方式。
1.1meta
在head中声明<meta name="color-scheme" content="light dark">
,声明当前页面支持 light 和 dark 两种模式,系统切换到深色模式时,浏览器默认样式也会切换到深色;
1.2CSS
下面的 css 同样可以实现上面 meta 声明的效果
:root {color-scheme: light dark;
}
注意:此声明并非为页面做自动适配,只影响浏览器默认样式
更多信息可查阅 W3C 文档 《CSS Color Adjustment Module Level 1》
2.通过 CSS 媒体查询
prefers-color-scheme
CSS 媒体特性用于检测用户是否有将系统的主题色设置为亮色或者暗色。
- no-preference
表示系统未得知用户在这方面的选项。在布尔值上下文中,其执行结果为 false。 - light
表示用户已告知系统他们选择使用浅色主题的界面。 - dark
表示用户已告知系统他们选择使用暗色主题的界面。
:root {color-scheme: light dark;background: white;color: black;
}@media (prefers-color-scheme: dark) {:root {background: black;color: white;}
}
//颜色较多的情况,建议使用CSS变量对颜色值进行管理
3.图片适配
利用picture+source标签,设置不同模式下的图片 url。
HTML <picture>
元素通过包含零或多个 <source>
元素和一个 <img>
元素来为不同的显示/设备场景提供图像版本。
浏览器会选择最匹配的子 <source>
元素,如果没有匹配的,就选择 <img>
元素的 src 属性中的URL。然后,所选图像呈现在<img>
元素占据的空间中。
<picture><!-- 深色模式下的图片 --><source srcset="dark.jpg" media="(prefers-color-scheme: dark)" /><!-- 默认模式下的图片 --><img src="light.jpg"/>
</picture>
4. JavaScript中判断当前模式&监听模式变化
4.1matchMedia
Window 的matchMedia() 方法返回一个新的MediaQueryList 对象,表示指定的媒体查询 (en-US)字符串解析后的结果。返回的MediaQueryList 可被用于判定Document是否匹配媒体查询,或者监控一个document 来判定它匹配了或者停止匹配了此媒体查询。
4.2addListener()
MediaQueryList接口的addListener()方法向MediaQueryListener添加一个侦听器,该侦听器将运行自定义回调函数以响应媒体查询状态的更改。
JavaScript监听判断
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')function darkModeHandler() {if (mediaQuery.matches) {console.log('现在是深色模式')} else {console.log('现在是浅色模式')}
}// 判断当前模式
darkModeHandler()
// 监听模式变化
mediaQuery.addListener(darkModeHandler)
四、嵌入app的H5页面
如果是嵌入app中的H5页面,还得相应的WebView提供支持,不然利用媒体查询可能会获取不到正确的结果。
本文链接https://blog.csdn.net/qq_39903567/article/details/115673247
H5项目适配系统深色模式方案总结相关推荐
- H5项目适配系统深色模式方案
一.背景 随着 iOS 13 的发布,深色模式(Dark Mode)越来越多地出现在大众的视野中,支持深色模式已经成为现代移动应用和网站的一个潮流,前段时间更是因为微信的适配再度引起热议.深色模式不仅 ...
- H5页面系统深色模式适配
1. 在css中设置CSS 媒体查询 PC web模式适配,在css中通过media查询进行适配即可生效. /*日间模式*/ @media (prefers-color-scheme: light) ...
- Mac:系统深色模式下关闭软件深色模式的办法(针对软件没有设置选项的情况)
个人习惯用Mac深色模式,但是有些开发软件会随着系统改变颜色,看着不是很舒服,又不支持自己设置,这时只能通过命令的模式来修改,下面是具体设置方式 比如我想调整Navicat为浅色模式,先到软件列表里找 ...
- 自己写一个H5项目CI系统
持续集成(Continuous integration,简称CI)系统在软件自动化构建(包括编译.发布.自动化测试)方面有着重要的作用,在之前,前端项目简单,很多时候发布都只是一些简单的拷贝,而随着w ...
- web SPA 移动端手机H5项目适配(vw+postcss)
在以前的时候,适配移动端我们一般使用rem,通过动态改变根fontsize来使页面缩放.其中很著名的就是淘宝开源的Flexible.当初为了能让页面更好的适配各种不同的终端,通过Hack手段来根据设备 ...
- Web前端深色模式适配方案
众所周知,GitHub 网站在前不久支持了深色模式.我在看 GitHub 的时候发现浏览器默认的滚动条也变成了深色样式: 我当时猜测应该有一个属性可以声明配色方案,然后浏览器根据声明的配色方案采用相应 ...
- H5项目兼容PC端和移动端的方案(持续跟新)
文章目录 一.利用CSS媒体查询维护两套样式 拓展-媒体查询 二.移动端1像素线问题 三.移动端 H5 滑动穿透 四.适配深色模式 一.利用CSS媒体查询维护两套样式 媒体查询:实现页面在不同设备下正 ...
- android开发适配深色模式,手机不支持深色模式,如何用软件解决深色模式的问题?(附有系统全局深色模式实现方法...
本帖最后由 巷子口的你 于 2020-8-8 07:57 编辑 1.92允许通过设置为助手应用来饮捷切频深色模式(设置入口一般为系统默认应用-助手和语音输人, MIU需要设置为语音助手)提醒:稳定模式 ...
- 鸿蒙系统下的搜狗输入法,搜狗输入法率先适配iPhone 11深色模式,用搜狗就对了!...
11 日凌晨,苹果秋季新品发布会在乔布斯大剧院举行,除iPhone 11 等新硬件产品外,其中最受瞩目的莫过于IOS13 的深色模式了.在本次第三方APP的适配竞速赛中,拥有庞大用户量的搜狗输入法率先 ...
最新文章
- 500万张图片,20万处地标风景,谷歌又放出大型数据集
- 【机器学习算法专题(蓄力计划)】三、机器学习中的概率论基础精讲
- E06-libcrypto.so.10 遗失的解决办法
- jieba自定义分词规则与多进程切词
- while(scanf(%d,n)!=EOF) / while(cinn)终止问题
- 超有意思的代码注释_程序员搞笑的代码注释:谁的代码注释我都不服,就服你的...
- 14.bash(2) 与 环境变量
- 阿里内部员工,排查Java问题常用的工具单
- sql-labs超详细教程
- 一个前端写的php博客系统--支持markdown哦
- 【计算机网络】透明网桥:逆向学习算法逐步建立转发表(例题详细解析)
- Linux介绍及安装过程 常用的命令 对目录或文件的增删改查 压缩和解压缩 用户和权限 shell/shellScript linux的一些其他命令
- Jasmine JavaScript测试 - toBe vs toEqual
- xgboost缺失值处理
- oracle 赋予dorp,ORACLE高级操作
- Postgresql-11 根据多字段创建分区表
- ACL访问控制列表(访问控制、抓取感兴趣流)详解及基本ACL和高级ACL的配置。
- 亚马逊AWS·优维科技EASYOPS企业云计算研讨会 邀请函
- 二本计算机专业可以考电网,不能小瞧的二本大学,学生毕业后直接进入电网?不用羡慕公务员...
- PHP 免费获取手机号码归属地
热门文章
- Windows系统快捷键分类说明
- 遇到问题 SCO UNIX 不能TELNET 本机
- 计算机毕业设计Java移动学习网站(系统+源码+mysql数据库+Lw文档)
- 微信小程序||可滑动卡片
- 华为AI计算机,华为在人工智能行业的发展
- JIL Game SDK 入门
- 发布即巅峰:Java性能调优六大工具:MAT内存分析工具
- 大华java面试经验_大华面试(Java 基础)
- 研究生的压力应对与心理健康2022秋期末答案
- 阿里腾讯外包Java怎样_阿里Java岗、腾讯后台开发岗面经(拿到AT双Offer)