@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);
}