主题换肤——跟随系统

关于如何实现主题换肤呢,之前已经有一篇文章:

juejin.cn/post/731095...

这篇文章是对之前主题换肤的补充,跟随系统实现主题换肤的功能

最简单的方法:

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> 
相关推荐
我是苏苏1 小时前
Web开发:C#通过ProcessStartInfo动态调用执行Python脚本
java·服务器·前端
无羡仙1 小时前
Vue插槽
前端·vue.js
用户6387994773052 小时前
每组件(Per-Component)与集中式(Centralized)i18n
前端·javascript
SsunmdayKT2 小时前
React + Ts eslint配置
前端
开始学java2 小时前
useEffect 空依赖 + 定时器 = 闭包陷阱?count 永远停在 1 的坑我踩透了
前端
zerosrat2 小时前
从零实现 React Native(2): 跨平台支持
前端·react native
狗哥哥2 小时前
🔥 Vue 3 项目深度优化之旅:从 787KB 到极致性能
前端·vue.js
青莲8432 小时前
RecyclerView 完全指南
android·前端·面试
青莲8432 小时前
Android WebView 混合开发完整指南
android·前端·面试
GIS之路2 小时前
GDAL 实现矢量数据转换处理(全)
前端