[英]How to programmatically set variables in Ionic's variables.scss?
Ionic 带有一个 variables.scss 文件,您可以在其中设置不同的样式变量,例如原色等。
有没有办法以编程方式更改此处的变量?
$colors: (
primary: #ffbb00,
secondary: #32db64,
danger: #f53d3d
);
例如:将原色更改为颜色选择器的结果
所以我很好奇并环顾四周,看看我是否能够找到解决方案,所以我得到了:
您无法更改 SASS 变量,因为它已编译并转换为 css,因此您使用属性color="your Color Name"
任何标记都将在构建过程中进行预处理并转换为大量background-color
和其他内容.
所以我开始寻找在 SASS 变量中使用css变量,比如
:root {
--modified-color: #333;
}
/*Declaring it here \/ or inside :root */
$colors: (
primary: --modified-color,
secondary: #32db64,
danger: #f53d3d
);
但无法实现我想要的,或者我不知道如何正确地做到这一点。 使用变量也许你可以做我的下一个想法,但以更简单的方式。
所以我想“也许有一个解决方法”,我想到了一些东西:
.dynamic-bg-color
。.dynamic-bg-color: { background-color: #333}
。<ion-item>
或<ion-toolbar>
或<button>
。this.storage.set('dynamic', '#333')
);当用户选择一种新颜色时,您将覆盖存储中的旧颜色并为您的类更改颜色:
public updateColor = (pickedColor) => { const color: string = pickedColor; // I'M ASSUMING THE PICKER RETURNS IT AS A STRING LIKE '#333333' let myTags = document.getElementsByClassName('dynamic-bg-color'); for(i=0; i < myTags.length; i++) { myTags [i].style.backgroundColor = color; // UPDATE ANYTHING ELSE YOU WANT } }
可能您每次进入新页面时都需要更新,因为它会使用该类生成更新的标签,因此在 ionViewWillEnter 上放置一个代码,以便他或她每次进入或返回该页面时都会更新颜色。
没试过这个,但值得一试。 如果你尝试这个让我知道它是否有效。
希望这会有所帮助:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.