【发布时间】:2016-01-24 12:36:18
【问题描述】:
我们正在制作一个 Angular2 应用程序,我们希望能够以某种方式创建一个全局 CSS 变量(并在分配变量时更新属性值)。
我们使用 Polymer 已经有一段时间了(现在我们正在切换到 Angular2 组件)并且我们使用了 CSS 属性(Polymer 有一些 polyfill)并且我们刚刚使用 Polymer.updateStyles() 更新了样式。
有什么方法可以实现类似的功能吗?
编辑:
我们想要类似于 Sass color: $g-main-color 或 CSS 自定义属性 color: var(--g-main-color) 的东西,并且每当我们决定更改属性的值时,例如像updateVariable('g-main-color', '#112a4f') 这样的东西会在任何地方动态更新值。所有这些都在应用程序运行时进行。
编辑 2:
我想在我的 CSS 的不同部分(主机、子元素...)中使用一些全局 CSS 变量,并且能够立即更改值 - 所以如果我更改 my-color 变量,它会在 app.xml 中的任何地方发生变化。
我将使用 Sass 语法,例如:
:host { border: 2px solid $my-color }
:host .some-label { color: $my-color }
可以使用 Angular 管道之类的东西吗? (但据说它只适用于 HTML)
:host { border: 2px solid {{ 'my-color' | cssvariable }} }
:host .some-label { color: {{ 'my-color' | cssvariable }} }
【问题讨论】:
-
我很想知道你采取了什么方法。我们有类似的要求。
-
我仍然没有解决方案。今天唯一合理的方法可能是使用带有某种 polyfill 的 CSS 变量......
-
你知道任何可以在angular2中用来替换变量的polyfill吗?
-
是否有原因使用 ngStyle 绑定到对象不起作用?这些对象可以来自任何地方,您可以在运行时随意更改它们。这样您就不必提前知道属性或值,您只需构造一个对象,将其分配给元素绑定的值,然后更改就会发生。这意味着您可以将任何类型的预制、静态或编译的 CSS 排除在外。如果这样做不好,您可以随时将所有元素绑定到 innerHTML,并通过应用您动态创建的样式跨度来更改 innerHTML。
标签: javascript angular dart angular-dart