首页 > 建站教程 > CSS3+HTML5 >  @media prefers-color-scheme 详解正文

@media prefers-color-scheme 详解

@media在我爱模板网的印象中,好像最多的是屏幕宽度高度查询来做响应式,如下:

@media(max-width: 756px) {
  margin: 0
}


实际上,它还能查询系统使用的是深色模式还是浅色模式,即prefers-color-scheme,css 媒体特性,用于检测用户是否有将系统的主题色设置为亮色或者暗色。

在过去,必须手动切换主题色,写两套css,然后通过js来切换。那如果要让网站跟着系统的颜色模式进行自动切换,就不好做了。还好css3提供了prefers-color-scheme,它有三个值:

// 浅色模式
@media (prefers-color-scheme: light) {
  ...
}
// 深色模式
@media (prefers-color-scheme: dark) {
  ...
}
// 不查询模式
@media (prefers-color-scheme: no-preference) {
  ...
}


除了第三种没什么用,上面两种就非常实用了,在浅色模式写浅色样式,在深色模式下写深色样式,在这两种模式之外写其他不随着系统模式变化而变化的样式,就能实现自动切换了。


案例:

@media (prefers-color-scheme: light) {
  :root {
    --background-color: white;
    --font-color: black;
    --border-color: #767575;
  }
}
@media (prefers-color-scheme: dark) {
  :root {
    --background-color: black;
    --font-color: white;
    --border-color: #eee;
  }
} 
body {
background-color: var(--background-color);
color: var(--font-color);
}
.title {
border: 1px solid var(--border-color);
}