【发布时间】:2018-09-16 18:37:25
【问题描述】:
我有一个 Angular 5 应用程序,其中的项目在 CSS 中使用 CSS 变量设置样式,如
--color-links: #0000ff;
a { color: var(--color-links); }
所以,我试图连接一个 HTML5 颜色选择器以允许动态更改此变量。
我看到this article 展示了this pen,作者正在使用一些简单的JS 来做我想做的事情,但使用document.addEventListener。我试图想出一个纯粹的 Angular/HTML5 方法。
所以,我创建了一个选择器:
<div class="form-group">
<label for="color-picker-link">Link color</label>
<input type="color"
id="color-picker-link"
(change)="setColor()"
[(value)]="linkColor">
</div>
在我的组件中,我创建了变量linkColor 并将其设置为#0000ff。该部分有效,选择器默认为蓝色。
public linkColor = '#0000ff';
setColor() {
console.log('value', this.linkColor);
}
但是,即使选择器明显更改,变量也始终记录为原始 30000ff。
所以,我需要做的是获取选择器更改为的值。不知道为什么它不起作用。
此外,我在上面链接到的示例 Codepen 使用此函数来设置检索到的变量值,尽管我认为它不适用于 Angular 应用程序:
function setThemeVar(name, value, unit) {
var rootStyles = document.styleSheets[0].cssRules[0].style;
rootStyles.setProperty('--theme-' + name, value + (unit || ''));
}
如果我可以解决在更改时从选择器中获取值,然后触发一个传递检索到的值的函数,我可能会找出其余的。
【问题讨论】:
标签: javascript html css angular css-variables