我希望在我的应用程序中支持多个主题 - 此外,我希望能够动态更改主题,无论是通过更改元素上的类还是使应用程序的不同部分使用不同的主题。
在我的上一个项目中,每次需要使用特定于主题的变量时,我都会添加明确的规则:
然而,这种方法不具有良好的可扩展性,并且会使源文件变得臃肿。
据我所知,LESS和SASS都无法以自然的方式实现这一点。似乎将其作为单独的后处理器实现并为每个主题构建样式表,然后比较它们并将差异定位到相应的“命名空间”中不会太困难。我怀疑这样的东西可能已经存在,但我找不到任何信息。
有什么建议吗?
在我的上一个项目中,每次需要使用特定于主题的变量时,我都会添加明确的规则:
.theme-light & { background-color: @theme-light-background; }
.theme-dark & { background-color: @theme-dark-background; }
然而,这种方法不具有良好的可扩展性,并且会使源文件变得臃肿。
现在,我正在寻找更自动化的方法。例如以下:
.button {
border-radius: 4px;
background-color: @ui-background;
color: @ui-foreground;
border: 1px solid mix(@ui-background, @ui-foreground, 50%);
}
将变成类似于以下的内容
.button {
border-radius: 4px;
border: 1px solid #808080;
/* normally we wouldn't expect this to appear here, but in our case
both themes have the same border color so we can't tell the difference */
}
.theme-light .button {
background-color: #fff;
color: #000;
}
.theme-dark .button {
background-color: #000;
color: #fff;
}
据我所知,LESS和SASS都无法以自然的方式实现这一点。似乎将其作为单独的后处理器实现并为每个主题构建样式表,然后比较它们并将差异定位到相应的“命名空间”中不会太困难。我怀疑这样的东西可能已经存在,但我找不到任何信息。
有什么建议吗?