主题换肤——跟随系统

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

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> 
相关推荐
IT_陈寒17 分钟前
Java 性能优化:5个被低估的JVM参数让你的应用吞吐量提升50%
前端·人工智能·后端
南囝coding29 分钟前
《独立开发者精选工具》第 018 期
前端·后端
小桥风满袖1 小时前
极简三分钟ES6 - ES9中for await of
前端·javascript
半花1 小时前
i18n国际语言化配置
前端
编程贝多芬1 小时前
Promise 的场景和最佳实践
前端·javascript
Asort1 小时前
JavaScript 从零开始(四):基础语法详解——从变量声明到数据类型的完全指南
前端·javascript
木木jio1 小时前
前端大文件分片上传 —— 基于 React 的工程化实现
前端·javascript
南雨北斗1 小时前
JS的对象属性存储器
前端
Lotzinfly1 小时前
12个TypeScript奇淫技巧你需要掌握😏😏😏
前端·javascript·面试
开源之眼1 小时前
React中,useState和useReducer有什么区别
前端