在Vaadin Flow Web应用程序中动态更改字体,字体大小,字体颜色等

时间:2018-11-02 22:04:06

标签: css dynamic fonts vaadin vaadin-flow

Vaadin Flow(版本10及更高版本)中,是否有某种方法可以动态更改Vaadin布局中的小部件的字体,字体大小,字体颜色等?

我确实了解CSS的基础知识,但是尽管我愿意学习,但是对SASS或CSS的其他超集却不太了解。而且我不知道Vaadin Flow正在使用CSS的哪些超集。

我知道我可以在运行时动态assign or remove CSS style names到小部件。但这意味着必须已定义CSS样式。

➥是否有某种方法可以在运行时分配任意字体样式?

1 个答案:

答案 0 :(得分:3)

简短的回答是。与Vaadin 8和更早版本相比,这是Vaadin Platform 10和更高版本之间的主要变化之一。在Vaadin平台中,主题不再基于SASS。

此更改的原因是因为我们使用Web组件来创建客户端“窗口小部件”,并且Web组件基于最新的HTML5标准。他们介绍了所谓的影子DOM和本地DOM概念。即Web组件的内部不能使用全局主题设置样式。因此,需要用于主题的许多新概念。 Custom propertiesthemable mixins等。我们有chapter in our documentation详细描述。

您的特定问题可以通过CSS自定义属性解决。它们基本上是CSS变量,并带有符号--my-propertyexample in documentation提供了如何向自定义窗口小部件添加自定义属性。这些自定义属性的值可以通过Flow element.getStyle().set("--my-property", "red");的Element API以全局样式和/或运行时定义。

此外,可以使用element.getStyle().set("fontWeight", "bold");之类的Element API element.getStyle()修改那些自然公开的样式

因此,与Vaadin 8相比,通常Vaadin Flow为dynamic styling提供了更多功能。

另请参阅:Vaadin Flow/10/11 style component via css