html - 如何通过 CSS 更改 Web 应用程序的颜色主题?
问题描述
我希望我的网络应用程序的主题能够根据设置自动更改。
目前,我正在使用这样的 jQuery 进行操作:
if (background == 'dark') {
$('#graph-container').addClass('graph-dark');
$('#analyticsbutton').addClass('analyticsbutton-dark');
}
但是,我想知道最好的做法是简单地使用修改后的类创建另一个 CSS 文件并根据background
参数加载它?
解决方案
最简单的方法是使用:root
选择器和自定义 css 变量。选择:root
器允许您定位 DOM 或文档树中最高级别的“父”元素。
然后,您可以简单.dark
地动态添加一个类来更改主题。
:root {
--light-text-color: black;
--light-bg-color: white;
--dark-text-color: white;
--dark-bg-color: black;
}
div{
width: 300px;
height: 100px;
margin-bottom: 10px;
}
div {
color: var(--light-text-color);
background: var(--light-bg-color);
border: 1px solid black;
}
:root .dark {
color: var(--dark-text-color);
background: var(--dark-bg-color);
}
<div>Light Theme</div>
<div class="dark">Dark Theme</div>
推荐阅读
- sql - 根据 Where 子句将 SQL Server 行复制到新行
- matlab - matlab:视频中的颜色对象跟踪和位置
- vuejs2 - Bulma 导航栏和 VueJS 路由器活动链接
- reactjs - 使 React 属性不绑定到特定变量
- postgresql - Postgres 自定义浮点类型,始终在点后截断为 2 位小数
- javascript - 使用 Lodash 将字符串数组转换为对象数组
- postgresql - PostgreSQL 何时对双精度列类型进行舍入
- javascript - 如何使用 jsPDF 将图像添加到 PDF,以便它在每台机器上显示相同?
- python - Python:赋值前引用
- angular - ASP.Net Core 2.1 Angular App - 调试时没有错误但加载时卡住了