Vaadin Flow TextField:如何动态更改字体颜色?
Vaadin Flow TextField: how dynamically change font color?
我想动态更改 Vaadin Flow TextField
组件的字体颜色。
试过这个,但不起作用:
textField.getElement().setProperty("color", "red");
我怀疑这是因为 <input>
元素隐藏在阴影 dom 中。我不知道如何处理这个。
顺便说一句,我知道 Dynamic Styling tutorial。
如果您不在意输入框上方标签的文本颜色也会变成红色,您也可以结合使用它(在当前的 Firefox 和 Chromium 中使用 Vaadin 14.2.1 测试):
textField.getElement().getStyle().set("color", "red");
textField.getElement().getStyle().set("-webkit-text-fill-color", "red");
使用 Custom Theme feature,您可以添加自定义主题 @Theme(value = "my-theme")
,创建 CSS 样式表文件 ${project.basedir}/frontend/themes/my-theme/components/vaadin-text-field.css
并将以下内容放在那里:
:host(.my-class-red) [part="input-field"]{
color:red
}
:host(.my-class-blue) [part="input-field"]{
color:blue
}
Java 一方:
TextField name = new TextField("Your name");
name.setLabel("My label");
Button red = new Button("Red", click -> {
name.removeClassName("my-class-blue");
name.addClassName("my-class-red");
});
Button blue = new Button("Blue", click -> {
name.removeClassName("my-class-red");
name.addClassName("my-class-blue");
});
Button reset = new Button("Reset", click -> {
name.removeClassNames("my-class-red", "my-class-blue");
});
add(red, blue, reset);
我想动态更改 Vaadin Flow TextField
组件的字体颜色。
试过这个,但不起作用:
textField.getElement().setProperty("color", "red");
我怀疑这是因为 <input>
元素隐藏在阴影 dom 中。我不知道如何处理这个。
顺便说一句,我知道 Dynamic Styling tutorial。
如果您不在意输入框上方标签的文本颜色也会变成红色,您也可以结合使用它(在当前的 Firefox 和 Chromium 中使用 Vaadin 14.2.1 测试):
textField.getElement().getStyle().set("color", "red");
textField.getElement().getStyle().set("-webkit-text-fill-color", "red");
使用 Custom Theme feature,您可以添加自定义主题 @Theme(value = "my-theme")
,创建 CSS 样式表文件 ${project.basedir}/frontend/themes/my-theme/components/vaadin-text-field.css
并将以下内容放在那里:
:host(.my-class-red) [part="input-field"]{
color:red
}
:host(.my-class-blue) [part="input-field"]{
color:blue
}
Java 一方:
TextField name = new TextField("Your name");
name.setLabel("My label");
Button red = new Button("Red", click -> {
name.removeClassName("my-class-blue");
name.addClassName("my-class-red");
});
Button blue = new Button("Blue", click -> {
name.removeClassName("my-class-red");
name.addClassName("my-class-blue");
});
Button reset = new Button("Reset", click -> {
name.removeClassNames("my-class-red", "my-class-blue");
});
add(red, blue, reset);