themes - Vaadin Flow 应用程序自动在明暗模式之间切换

标签 themes vaadin vaadin-flow

Vaadin Flow 14 附带了两个捆绑主题的浅色和深色版本:LumoMaterial

现在browsers can ask the host OS for the user’s preference for light or dark modes .

有没有办法让 Vaadin 应用根据用户的意愿自动使用浅色或深色主题变体?

Marcus Hellberg 写道 a helpful post on how to switch light/dark mode以编程方式进行主题变体。我想知道 Vaadin 14 是否能够自动切换,因为可以从浏览器中检测到用户首选项。

如果没有,也许有人可以显示 Java 代码,用于从服务器端 Java 代码查询用户的偏好。

最佳答案

您可以使用window.matchMedia用于监听 prefers-color-scheme 更改的 API媒体查询标准化为 Media Queries Level 5 。请参阅CanIUse.com用于浏览器支持。

CSS media feature配色方案偏好有 3 个可能的值:no-preferencelightdark。下面的代码在 dark 上查找匹配项。

  1. 将下面所示的 JavaScript 代码放入 /frontend/prefers-color-scheme.js
  2. 在主视图上添加注释 @JsModule("prefers-color-scheme.js")
let mm = window.matchMedia('(prefers-color-scheme: dark)');
function apply() {
    document.documentElement.setAttribute("theme",mm.matches?"dark":"");
}
mm.addListener(apply);
apply();

来源:https://gist.github.com/emarc/690eb2659c8b51cb895716914d65ec19

关于themes - Vaadin Flow 应用程序自动在明暗模式之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59462273/

相关文章:

android - 在 api 21 下将主题应用于对话框时出现奇怪的行为

mysql - vaadin 和 mysql 数据库中的乐观锁定

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

maven - Maven 在新的 Vaadin 14.0.4 项目中找不到一些依赖项 <artifactId>

reactjs - 如何使用 Material UI 主题使所有按钮文本变为粗体

css - 在已经使用 withTheme() 的情况下使用 withStyles() 覆盖 material-ui 主题

java - 在 Vaadin 中加载自己的图标字体

java - 将 Vaadin 应用程序部署到生产环境时出现问题

android - Xamarin Android - 更改 TimePicker 键盘 View 的颜色

java - 无法将组件添加到布局