4

次のようなスタイルシートがあります。

*
{
    -fx-font-size: 15px;
}

.title
{
    -fx-font-size: 20px;
}

since*は より一般的であり.title-fx-font-size定義された in.titleが優先されると思っていましたが、間違っています。でフォント サイズを変更しても.title、タイトル ラベルは で表示され15pxます。ブロックを削除する*と、タイトル ラベルは で定義されたサイズを正しく反映し.titleます。

私のアプローチに何か問題がありますか?「グローバル」なルック アンド フィールを設定しようとしていますが、特定のノードがよりカスタマイズされたルック アンド フィールを必要とする場合に、そのノードを柔軟に調整できるようにしています。

編集

この問題は、フォント関連の CSS プロパティでのみ発生するようです。-fx-font-size私の例を に変更してみましたが-fx-border-color、通常の CSS 標準に従って動作するようです。

フォントのプロパティに何か変なものがあるようです。

4

2 に答える 2

3

すべてのノードにフォント サイズを割り当てます。

Labels (および同様の要素) の場合、テキストはそれ自体ではなく、子孫ノードによって表示されますNode-fx-font-size通常、そのノードはからプロパティを継承しますLabelが、すべての単一ノードにそのプロパティを割り当てるため、この子孫自体に割り当てられ、親からの値は使用されません。

これを修正するには、 class を持つノードの子孫に新しいサイズを割り当てますtitle

* {
    -fx-font-size: 15px;
}

.title * {
    -fx-font-size: 20px;
}
于 2016-12-02T08:38:22.883 に答える
2

使用できます!important

.title{
    -fx-font-size: 20px !important;
}

または、ID を持つ要素が 1 つしかない場合はさらに良い:

#title{
   -fx-font-size: 20px !important;
}

段落のhttps://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.htmlから:

シーン、親、およびサブシーンのスタイルシート


CSS スタイルは、スタイル シートまたはインライン スタイルから取得できます。スタイル シートは、Scene オブジェクトの stylesheets 変数で指定された URL から読み込まれます。シーン グラフにコントロールが含まれている場合、デフォルトのユーザー エージェント スタイル シートが読み込まれます。インライン スタイルは、Node setStyle API を介して指定されます。インライン スタイルは、HTML 要素の style="..." 属性に似ています。シーンのスタイル シートから読み込まれたスタイルは、ユーザー エージェント スタイル シートのルールよりも優先されます。インライン スタイルは、他の場所で作成されたスタイルよりも優先されます。スタイル ルールの優先順位は、スタイル宣言で "!important" を使用して変更できます。


ノードのスタイルの優先度

JavaFX ランタイムは、次の優先度ルールを使用して、ノードのビジュアル プロパティを設定します。プロパティの値を持つ優先度の高いソースが使用されます。

• インライン スタイル (最優先)

•親スタイル シート

・シーンスタイルシート

•JavaFX APIを使用してコードに設定された値

•ユーザー エージェント スタイル シート (優先度が最も低い)

ノードの親に追加されたスタイル シートは、シーンに追加されたスタイル シートよりも高い優先度が与えられます。これにより、開発者はシーン グラフのさまざまなブランチにカスタム スタイルを適用できます。

于 2016-12-02T03:11:35.203 に答える