关于如何实现主题换肤呢,之前已经有一篇文章:
这篇文章是对之前主题换肤的补充,跟随系统实现主题换肤的功能
最简单的方法:
ini
<meta name="color-scheme" content="dark light">
而dark和light切换时样式的颜色是根据用户代理样式表中规定的颜色来变化的:
用户代理样式表(User agent stylesheet)是浏览器提供的默认样式表,用来给未显式样式化的 HTML 元素提供基本的样式。当你打开网页时,如果 HTML 文档没有指定某些样式或者没有链接到外部CSS文件,浏览器就会采用这些默认的样式来显示网页内容。这些样式可能包括字体大小、颜色、边距等等,确保即使在没有指定样式时,网页也能有一个基本的、通常可接受的外观。
想了解的可以看一下:
developer.mozilla.org/zh-CN/docs/...
drafts.csswg.org/css-color/#...
嫌自带的颜色太丑,那也可以搭配配合媒体查询的prefers-color-scheme
属性去改变个别的颜色:
xml
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="color-scheme" content="dark light">
<style>
fieldset {
background-color: wheat;
}
@media (prefers-color-scheme: dark) {
fieldset {
background-color: seagreen;
}
button {
background-color: aqua;
}
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>换肤------跟随系统</legend>
<button type="button">button</button>
</fieldset>
</form>
</body>
</html>
完完全全想要自己定制,也可以不加<meta name="color-scheme" content="dark light">
,就自己写一套样式,然后用媒体查询的prefers-color-scheme
属性将它应用到页面
关于图片如何跟随系统进行颜色变化:
xml
<!-- 根据 prefers-color-scheme 为不同模式选择不同图片 -->
<picture>
<source srcset="dark.png" media="(prefers-color-scheme: dark)" />
<source srcset="light.png" media="(prefers-color-scheme: light)" />
<img src="light.png" alt="" />
</picture>