JavaFXカスケード・スタイルシート(CSS)は、W3C CSSバージョン2.1 [1]に基づいており、バージョン3 [2]に対する現在の作業の一部が追加されています。また、JavaFX CSSでは、特定のJavaFX機能をサポートするためにCSSを拡張しています。JavaFX CSSの目標は、HTML向けCSSをすでに習得しているWeb開発者がCSSを使用して、JavaFXコントロールおよびシーングラフ・オブジェクトのテーマを無理のない方法でカスタマイズおよび開発できるようにすることです。
JavaFXにはCSSの豊富な拡張機能があり、色派生、プロパティ参照、単一ノードに対する複数の背景色とボーダーなどの機能をサポートしています。これらの機能は、開発者および設計者に新しい大きな力をもたらすものであり、このドキュメントで詳しく説明します。
可能なかぎり、JavaFX CSSはW3C標準に従いますが、ほとんど例外なく、JavaFXプロパティ名には接頭辞として-fx-というベンダー拡張子が付けられています。これらのプロパティが標準のHTML CSSと互換性があるように見えても、JavaFX CSS処理ではプロパティ値がJavaFX CSS拡張機能を利用することを前提としています。
CSSスタイルは、HTML DOMの要素に適用される場合と同じような方法で、JavaFXシーングラフのノードに適用されます。スタイルは、まず親に適用され、次にその子に適用されます。コードは、CSSの再適用が必要になる可能性があるシーングラフの分岐のみがアクセスされるように記述されます。ノードは、シーングラフに追加された後でスタイル設定されます。ノードの擬似クラス状態、スタイル・クラス、ID、インライン・スタイルまたは親が変更されたり、スタイルシートがシーンに対して追加または削除されると、スタイルが再適用されます。CSSが適用されるようにするには、ノードがシーングラフに存在する必要があることに注意してください。ノードを表示する必要はありませんが、そのscenePropertyはnull以外の値である必要があります。詳細は、applyCssを参照してください。
通常のシーングラフ・パルス中に、シーングラフがレイアウトされて描画される前に、CSSスタイルが適用されます。擬似クラス状態変更をトリガーするイベント("ホバー"状態をトリガーするMouseEvent.MOUSE_ENTEREDなど)のスタイルは、そのイベントに続く次のパルスに適用されます。