所以我觉得这个标题已经足够解释了:我想动态地为我的整个应用程序设置主题.也许这意味着当我按下一个特定的按钮时,可以更改所有div的 colored颜色 ,或者当一个特定的用户登录时,可以更改整个webapp的 colored颜色 .
为了让大家了解我目前正在做的工作,我会说我已经构建了一个Vue.js应用程序使用了许多库,包括一个名为Element ui的应用程序,它已经内置了一个主题选项.问题是它是用scss编写的,我想在导航过程中更改所有可变 colored颜色 .我的项目看起来像这样:
<template>
... some HTML and components...
</template>
<script>
... some javascript ...
</script>
<style scoped>
... some style that is scoped to the current component only ...
</style>
我有很多这样的文件,所以为所有这些文件创建一个"全局函数"对我来说并不实用.此外,我在main.js
分钟内只导入一次主scss文件.
我能做些什么来为我的网络应用创建一个dinamic主题吗?使用saas是个好主意吗?也许吧?
编辑
我觉得我解释得不够好,所以我想添加一个简单的例子.如果你访问Element页,你可以看到在右上角有一个 colored颜色 Select 器,当 colored颜色 改变时,它也会改变整个网站的重点 colored颜色 ,如按钮 colored颜色 、链接 colored颜色 等.
希望这有助于更好地理解
编辑
现在,我已经确定了一个非常糟糕的解决方案,我认为,这个解决方案优化得很糟糕.其 idea 是,当用户更改主题时,我只需创建一个新的css文件,并将其附加到当前文档中.
let sheet = document.createElement('style')
sheet.innerHTML = `*[class*="--primary"]{
background-color: ${colors[0]};
}
...`;
document.body.appendChild(sheet);
我真的认为这是一个非常糟糕的解决方案,但现在我想不出任何其他可以在用户更改参数时正常工作的方法.我真的希望这个过程完美无缺:用户 Select 一种 colored颜色 ,整个应用程序只需更改为特定的 colored颜色 ,而不是预构建的theme.css
.
FINAL 编辑
我终于找到了解决办法,请参考答案!