在JavaFX CSS Reference Guide中,它已明确表示
在JCRG中,它们经常直接链接到W3C的CSS参考指南,当他们谈论选择器时就是这种情况。
在JCRG中,他们提到了Type Selectors,Class Selectors和ID Selectors - 他们甚至可以说他们don't support structural pseudo-classes - 但没有人说Attribute Selectors {3}}
如果JavaFX支持它们,它们如何工作? JavaFX认为属性是什么?我认为CSS引擎可能会查看FXML中的属性,但并非所有场景图都来自FXML。
答案 0 :(得分:2)
FXML属性只是在相应的对象上设置属性。没有"属性选择器"本身,但是当且仅当设置了某些属性时,某些节点才会设置伪类(这些属性在您链接的参考指南中记录)。所以底线是没有直接等效的属性选择器,除非它们直接映射到伪类。
当然,请注意,如果需要基于属性支持CSS,则始终可以观察属性并设置/取消设置自定义伪类。因此,始终可以将属性选择器重新设置为伪类。
所以,例如假设您希望以不同的方式设置文本字段的样式(如果它具有"alignment=CENTER_RIGHT"
属性。你可以做到
TextField textField = new TextField();
PseudoClass rightAligned = PseudoClass.getPseudoClass("right-aligned");
textField.alignmentProperty().addListener((obs, oldAlignment, newAlignment) ->
textField.pseudoClassStateChanged(rightAligned, newAlignment == Pos.CENTER_RIGHT));
然后在你的CSS中你需要
.text-field:right-aligned {
/* style rules */
}