您现在的位置是:网站首页> 编程资料编程资料
详解Html5项目适配系统深色模式方案总结纯CSS免费让网站拥有暗黑模式切换功能的实现代码CSS变量实现暗黑模式的示例代码Html页面支持暗黑模式的实现
2021-08-30
1232人已围观
简介 这篇文章主要介绍了详解Html5项目适配系统深色模式方案总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、背景
随着 iOS 13 的发布,深色模式(Dark Mode)越来越多地出现在大众的视野中,支持深色模式已经成为现代移动应用和网站的一个潮流,前段时间更是因为微信的适配再度引起热议。深色模式不仅可以大幅减少电量的消耗,减弱强光对比,还能 提供更好的可视性和沉浸感。
如何切换深色模式
- iOS:“设置”–“显示与亮度”–“外观”,选择“深色”
- Android:“系统设置”–“显示”–“深色模式”。
二、问题
如果系统设置了深色模式,H5页面不做相应的处理,会出现背景色冲突、深色文字显示异常,深色图标显示异常等一些显示上的问题。
所以,需要对深色模式进行一些适配。
我尝试了一些方案:
三、H5项目适配深色模式方案
1.声明 color-scheme
有两种方式。
1.1meta
在head中声明,声明当前页面支持 light 和 dark 两种模式,系统切换到深色模式时,浏览器默认样式也会切换到深色;
1.2CSS
下面的 css 同样可以实现上面 meta 声明的效果
:root { color-scheme: light dark; } 注意:此声明并非为页面做自动适配,只影响浏览器默认样式
更多信息可查阅 W3C 文档 《CSS Color Adjustment Module Level 1》
2.通过 CSS 媒体查询
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 元素来为不同的显示/设备场景提供图像版本。
浏览器会选择最匹配的子 元素的 src 属性中的URL。然后,所选图像呈现在
元素占据的空间中。
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)到此这篇关于详解Html5项目适配系统深色模式方案总结的文章就介绍到这了,更多相关Html5深色模式内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- Canvas跟随鼠标炫彩小球的实现5分钟实现Canvas鼠标跟随动画背景ES6与canvas实现鼠标小球跟随效果canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动html5 canvas实现跟随鼠标旋转的箭头html5使用canvas实现跟随光标跳动的火焰效果
- 几款流行的HTML5 UI框架比较(小结)使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效移动HTML5前端框架—MUI的使用深入剖析HTML5 内联框架iFrame推荐10个HTML5响应式框架五个2015 年最佳HTML5 框架
- HTML速写之Emmet语法规则的实现Dreamweaver安装emmet插件的图文教程
- 给原生html中添加水印遮罩层的实现示例Html5页面点击遮罩层背景关闭遮罩层HTML实现遮罩层的方法 HTML中如何使用遮罩层
- 使用HTML+Css+transform实现3D导航栏的示例代码html+css+js实现导航栏滚动渐变效果Html5导航栏吸顶方案原理与对比实现html5 横向滑动导航栏的方法示例html+css 实现简易导航栏功能基于html和CSS3制作简单侧边导航栏基于html和CSS3制作酷炫的导航栏使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
- Html5页面播放M4a音频文件HTML5 video循环播放多个视频的方法步骤HTML5 通过Vedio标签实现视频循环播放的示例代码HTML5播放实现rtmp流直播html5视频自动横过来自适应页面且点击播放功能的实现html5中嵌入视频自动播放的问题解决html5 移动端视频video的android兼容(去除播放控件、全屏)HTML5自定义mp3播放器源码HTML5自定义视频播放器源码html5自定义video标签的海报与播放按钮功能解决HTML5中的audio在手机端和微信端的不能自动播放问题
- 利用html+css实现菜单栏缓慢下拉效果的示例代码如何通过 display:olck/none 完成一个菜单栏使用layui实现左侧菜单栏及动态操作tab项的方法Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码使用HTML+CSS实现鼠标划过的二级菜单栏的示例详解css3 Transition属性(平滑过渡菜单栏案例)菜单栏 “三” 变形为“X”css3过渡动画利用CSS实现几款不错的菜单栏实例代码CSS仿网易首页的头部菜单栏按钮和三角形制作方法纯CSS制作菜单栏当鼠标经过时会变色的
- 使用canvas实现雪花飘动效果的示例代码HTML5 canvas实现雪花飘落特效html5的canvas实现3d雪花飘舞效果
- 前端Html5如何实现分享截图的示例代码HTML5中外部浏览器唤起微信分享功能的代码html5 canvas手势解锁源码分享HTML5中外部浏览器唤起微信分享Html5页面二次分享的实现微信端html5页面调用分享接口示例详解html5 canvas 微信海报分享(个人爬坑)利用HTML5 Canvas制作键盘及鼠标动画的实例分享使用纯HTML5编写一款网页上的时钟的代码分享使用html5 canvas 画时钟代码实例分享HTML5图片预览实例分享
- html5实现可拖拽移动的悬浮图标的示例代码HTML5中在title标题标签里设置小图标的方法HTML5、Select下拉框右边加图标的实现代码(增进用户体验)

