MDN CSS1
MDN CSS2
// file: src/style/base/theme/vars/light.less
.varsLight() {
--weui-BG-0: #ededed;
--weui-BG-1: #f7f7f7;
--weui-BG-2: #fff;
--weui-BG-3: #f7f7f7;
--weui-BG-4: #4c4c4c;
--weui-BG-5: #fff;
--weui-FG-0: rgba(0, 0, 0, 0.9);
--weui-FG-HALF: rgba(0, 0, 0, 0.9);
--weui-FG-1: rgba(0, 0, 0, 0.5);
--weui-FG-2: rgba(0, 0, 0, 0.3);
--weui-FG-3: rgba(0, 0, 0, 0.1);
--weui-RED: #fa5151;
--weui-ORANGE: #fa9d3b;
--weui-YELLOW: #ffc300;
--weui-GREEN: #91d300;
--weui-LIGHTGREEN: #95ec69;
--weui-BRAND: #07c160;
--weui-BLUE: #10aeff;
--weui-INDIGO: #1485ee;
--weui-PURPLE: #6467f0;
--weui-WHITE: #fff;
--weui-LINK: #576b95;
--weui-TEXTGREEN: #06ae56;
--weui-FG: black;
--weui-BG: white;
--weui-TAG-TEXT-ORANGE: #fa9d3b;
--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, 0.1);
--weui-TAG-TEXT-GREEN: #06ae56;
--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, 0.1);
--weui-TAG-TEXT-BLUE: #10aeff;
--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, 0.1);
--weui-TAG-TEXT-BLACK: rgba(0, 0, 0, 0.5);
--weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, 0.05);
}
// file: src/style/base/theme/vars/dark.less
.varsDark() {
--weui-BG-0: #191919;
--weui-BG-1: #1f1f1f;
--weui-BG-2: #232323;
--weui-BG-3: #2f2f2f;
--weui-BG-4: #606060;
--weui-BG-5: #2c2c2c;
--weui-FG-0: rgba(255, 255, 255, 0.8);
--weui-FG-HALF: rgba(255, 255, 255, 0.6);
--weui-FG-1: rgba(255, 255, 255, 0.5);
--weui-FG-2: rgba(255, 255, 255, 0.3);
--weui-FG-3: rgba(255, 255, 255, 0.05);
--weui-RED: #fa5151;
--weui-ORANGE: #c87d2f;
--weui-YELLOW: #cc9c00;
--weui-GREEN: #74a800;
--weui-LIGHTGREEN: #28b561;
--weui-BRAND: #07c160;
--weui-BLUE: #10aeff;
--weui-INDIGO: #1196ff;
--weui-PURPLE: #8183ff;
--weui-WHITE: rgba(255, 255, 255, 0.8);
--weui-LINK: #7d90a9;
--weui-TEXTGREEN: #259c5c;
--weui-FG: white;
--weui-BG: black;
--weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, 0.6);
--weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, 0.1);
--weui-TAG-TEXT-GREEN: rgba(6, 174, 86, 0.6);
--weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, 0.1);
--weui-TAG-TEXT-BLUE: rgba(16, 174, 255, 0.6);
--weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, 0.1);
--weui-TAG-TEXT-BLACK: rgba(255, 255, 255, 0.5);
--weui-TAG-BACKGROUND-BLACK: rgba(255, 255, 255, 0.05);
};
1 prefers-color-scheme CSS 媒体特性用于检测用户是否有将系统的主题色设置为亮色或者暗色。
MDN prefers-color-scheme
2 [data-weui-theme='dark'] 属性选择器
MDN 不同类型的选择器
更多其他选择器
// file: src/style/base/theme/index.less
@import 'fn';
body {
.varsLight();
}
@media (prefers-color-scheme: dark) {
body:not([data-weui-theme='light']) {
.varsDark();
}
}
body[data-weui-theme='dark'] {
.varsDark();
}
3 为主题动态增加规则
// & 作用 在内嵌调用 .dark() 时;将该样式选择器,归入到body[data-weui-theme='dark'] 子节点中
// file: src/style/base/theme/fn.less
@import 'vars/light';
@import 'vars/dark';
.dark(@rule) {
body[data-weui-theme='dark'] & {
@rule();
}
@media (prefers-color-scheme: dark) {
body:not([data-weui-theme='light']) & {
@rule();
}
}
}
.setColor(@var, @color) {
.setColor(@var, @color, @color);
}
.setColor(@var, @light, @dark) {
._setColor({
@{var}: @light;
}, {
@{var}: @dark;
});
}
._setColor(@lightRule, @darkRule) {
body {
@lightRule();
}
body[data-weui-theme='dark'] {
@darkRule();
}
@media (prefers-color-scheme: dark) {
body:not([data-weui-theme='light']) {
@darkRule();
}
}
}