【发布时间】:2019-06-29 00:56:14
【问题描述】:
我目前正在将 Vaadin 8 应用程序迁移到 Vaadin 12。外观应该由用户使用,并在登录时或通过按下按钮进行更改。
在我们的 Vaadin 8 应用程序中,我们有 2 个主题(一个深色和一个浅色),每个主题都有自己的 SASS/CSS 和一些共享属性。用户可以使用 setTheme() 方法来切换它。当点击切换按钮时,外观就发生了变化。在 Vaadin 12 中,Theming 采用了不同的方法,我正在努力寻找在 Vaadin 12 中实现此功能的好方法。
假设我们不想创建一个全新的主题,只想使用自定义的 LUMO。我可以通过@Theme Annotation 设置主题/变体。缺点:主题将在运行时固定。
我也可以编写一些代码来将变体应用于我的应用程序和组件。 (如动态样式章节:https://vaadin.com/docs/flow/element-api/tutorial-dynamic-styling.html) 缺点:遍历每个元素并应用变体不是很实用。
我现在的问题:
在运行时实现主题之间切换的最佳方式是什么?(Lumo 或任何其他主题的自定义明暗变体)。
我是否只需要创建 2 个包含 CSS 的 HTML 文件(出于兼容性考虑),然后通过动态导入以某种方式覆盖当前使用的文件?
我希望我的问题很清楚,有人可以指出正确的方向。
【问题讨论】:
-
仅供参考,在带有现代 Web 浏览器和四行 JavaScript 的 Vaadin 14 中,您的 Web 应用程序可以在 Light Mode 和 Dark Mode 之间即时自动切换以匹配您的在主机操作系统中设置的用户首选项。请参阅问题上的this Answer by Marcus HellbergVaadin Flow app switch between light and dark modes automatically。
-
另请参阅 Marcus Hellberg 在 Vaadin.com 上的帖子,Toggle dark Lumo theme variant dynamically。
标签: vaadin vaadin-flow vaadin12 vaadin-themes