javascript - VueJS - 将全局变量从数据共享到内部 scss 文件(动态 CSS)
问题描述
我有一个名为的主组件App.vue
,在该文件中我向服务器调用 ajax 请求,该请求返回颜色 JSON。
我的 ajax 调用位于名为created
. ajax 完成后,它将根据结果填充本地数据库。
在同一个文件中,我有用 SCSS 编写的样式。
<style lang="scss">
$primary: #ff2000;
$secondary: #000111;
</style>
是否可以将组件状态中的颜色 JSON 共享到此 SCSS 文件中?请想象下面的图片。
**更正**
this.colors = 颜色.data
.color-secondary { 背景:$secondary; }
颜色是动态的,这就是它来自数据库的原因。
提前致谢。
解决方案
我想我搞定了!!但我不太确定是否推荐。我什至还不知道做这个调整的好处和坏处。但它确实奏效了!:)
created() {
// assume that this colors are coming from an async ajax call
let colors = {
primary: 'red',
secondary: 'blue'
}
this.setThemeColors(colors);
},
methods: {
setThemeColors(colors) {
let style = document.documentElement.style;
for (let key of Object.keys(colors)) {
style.setProperty("--theme-color-" + key, colors[key]);
}
}
}
这一切都是从样式表的根目录设置的。检查下面使用它,
<style lang="scss">
$color-primary: var(--theme-color-primary);
$color-secondary: var(--theme-color-secondary);
.color-primary {
color: var(--theme-color-primary)
}
.color-secondary {
color: var(--theme-color-secondary)
}
</style>
但是又遇到一个问题,css变量在IE11及以下不工作!
推荐阅读
- php - 通过路由从 Laravel 中的 MySQL 导出列时出错
- c# - 发布和清除过滤器-Razor 页面
- amazon-web-services - 如何在不使用 AWS API Gateway 的情况下使用 Cognito 对我的 API 请求进行身份验证
- python - 添加来自不同数据框的列中的值
- c++ - 如何在一个静态库中创建一个空的实现类,而不是在另一个静态库中提供具体实现?
- python - 将每个 pandas 行与列表字典进行比较,并将新变量附加到数据框
- python - /home/vsts/work/1/ 中的 Azure Pipelines Python FileNotFoundError
- powershell - 如何在Powershell中将找到特定字符串的所有文件合并为一个文件?
- swift - 如何使用 Combine 实现我的 MVP/Rxswift
- erlang - Bang 运算符不适用于分布式节点