css3 根据用户操作系统的主题色改变自己网站的颜色

Posted 郝艳峰Vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css3 根据用户操作系统的主题色改变自己网站的颜色相关的知识,希望对你有一定的参考价值。

前言

现在好多手机,电脑用户都有设置系统主题色的习惯,一般就是两种,亮色和暗色模式,一般我们正常开发的网站都适用于亮色主题,但是用户切换为暗色模式时,网站主题色就显得格格不入了,这里记录一下css3 是如何实现跟随网站主题色而改变颜色的。


本篇文章的主角就是prefers-color-scheme,这个css3的新特性,用于检测用户的操作的系统设置是亮色(light)还是暗色(dark).

废话不多说,直接上代码

一,css监听系统主题色变化

:root表示文档根元素,优先级比较高,而且再这里边定义的变量也可作为全局变量
:root 
  font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
  font-size: 16px;
  color-scheme: light dark;		/* 系统主题一般是亮色和黑色 */
  color: #ffffff;               /* 默认是黑色主题的颜色 */
  background-color: #000000;    /* 默认是黑色主题的颜色 */
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-text-size-adjust: 100%;
  --themeBlue:#007bff;

*
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;

a
	/* :root中设置的变量就可以再全局使用 */
	color:var(--themeBlue);   

/* 亮色模式下的主题色 */
@media (prefers-color-scheme: light) 
  :root 
    color: #213547;
    background-color: #ffffff;
  

二,js监听系统主题色变化

<script>
//监听当前系统是什么主题色,可以做一些对应的操作
const prefersColorScheme = window.matchMedia('(prefers-color-scheme: light)');
if (prefersColorScheme.matches) 
	console.log('浅色模式');
 else 
	console.log('深色模式');

</script>

结束语

学会这个,以后就不怕产品说,根据系统主题色改变颜色的需求了。

以上是关于css3 根据用户操作系统的主题色改变自己网站的颜色的主要内容,如果未能解决你的问题,请参考以下文章

react实现网站换肤功能

微信小程序 切换主题色

eclipse改变背景颜色

element-ui如何改变主题色

Vue更换主题色的几种方法思路

vue中换肤