Vaadin Flow:如何为Dialog/ConfirmDialog添加边框?
问题:为Vaadin ConfirmDialog添加边框并提升对比度
我尝试给Vaadin ConfirmDialog添加边框,以此提升标准Lumo主题深色模式下的对比度(当前Dialog与背景对比度太低,边界难以区分)。使用的是Vaadin Flow v23.2.4版本,最初尝试的Java代码如下:
ConfirmDialog dlg = new ConfirmDialog(); dlg.addClassNames(LumoUtility.Border.ALL, LumoUtility.BorderColor.CONTRAST);
但实际效果不符合预期:边框被添加到了整个屏幕的画布上,而非对话框对应的浮层(overlay)。
解决方案
根据Vaadin文档,浮层无法通过CSS类名或Java代码直接设置样式,我接受让新样式应用于应用中的所有ConfirmDialog。参考相关技术回答,具体操作步骤如下:
- 在
frontend/themes/my-theme/components目录下创建名为vaadin-confirm-dialog-overlay.css的文件 - 在该文件中写入以下CSS代码:
/* Customize ConfirmDialog so that it has a border. If not, the dialog tends to blend in with the background in particular when using Dark theme. */ vaadin-confirm-dialog-overlay::part(overlay) { border: 1px solid; border-color: var(--lumo-contrast-50pct); }
以上方法成功解决了Dialog与背景对比度低、边界不清晰的问题。
内容的提问来源于stack exchange,提问作者peterh
相关产品推荐
相关产品推荐

