如何只更改javafx css中的左边距

tom*_*row 5 css javafx

我已经使用了很多html + css,但我对javafx + css完全不熟悉.所以这将是一个新手问题,但我无法在任何地方找到答案.

我有一个充满标签的大型GridPane(除了其他标签).我可以为所有这些标签设置填充,例如:

GridPane.containerLevel02 Label {
    -fx-padding: 0 0 0 5;
}
Run Code Online (Sandbox Code Playgroud)

这有效.我希望一些标签更加缩进,所以我为它们创建了"leftIndent"类:

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: 0 0 0 20;
}
Run Code Online (Sandbox Code Playgroud)

这也有效.

但是,我不想在那里指定三个零,因为如果我决定将一般的顶部/底部填充添加到标签,它将不会影响"leftIndent"标签.

我正在寻找的是:

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding-left: 20;
}
Run Code Online (Sandbox Code Playgroud)

...喜欢"正常"的CSS或......

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: null null null 20;
}
Run Code Online (Sandbox Code Playgroud)

...或者任何可以让我指定左边填充的东西,使顶部,右边和底部填充不受当前任何值的影响.

那可能吗?谢谢!

Mic*_*ung 8

由于JavaFX不提供-fx-padding-left或类似,我认为最简单的解决方法是使用变量.例如:

.root {
  LABEL_PADDING_TOP: 0;
  LABEL_PADDING_RIGHT: 0;
  LABEL_PADDING_BOTTOM: 0;
  LABEL_PADDING_LEFT: 5;
}

GridPane.containerLevel02 Label {
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM LABEL_PADDING_LEFT;
}

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM 20;
}
Run Code Online (Sandbox Code Playgroud)

它仍然要求您覆盖在某些用例中可能不需要的所有值,但至少您必须仅在一个地方指定默认值.

  • 不如-fx-padding-left好,但对于我的用例来说绝对足够好!谢谢! (2认同)