この章の内容は次のとおりです。
CSSでは、ルールを定義するHTMLページ内の要素を指定するために、セレクタを使用します。たとえば、CSSの次のセレクタでは、<p>
タグ内にレンダリングされるコンテンツの外観を特定するルールを定義します。
p { color: red }
同様に、ADFスキニング・フレームワークによって定義されるセレクタを使用すると、ルールとともにスタイル・プロパティを指定して、指定したタグが実行時にルールによって検出されたときに、それらのプロパティをレンダリングできるようになります。ADFスキニング・フレームワークでは、グローバル・セレクタおよびコンポーネント固有セレクタという2つのタイプのセレクタが提供されます。グローバル・セレクタでは、1つ以上のセレクタに適用するスタイル・プロパティを定義します。コンポーネント固有セレクタでは、1つのコンポーネントに適用するスタイル・プロパティを定義します。
Oracle ADFで提供されるADFスキンでは、複数のADF Facesコンポーネントによって継承される複数のグローバル・セレクタ(セレクタ・エディタのユーザー・インタフェースでの「グローバル・セレクタ別名」)を定義します。たとえば、多くのADF Facesコンポーネントでは、フォント・ファミリの指定に.AFDefaultFontFamily:alias
グローバル・セレクタを使用します。異なるフォント・ファミリを指定して、このセレクタをオーバーライドするADFスキンを作成した場合、その変更は、セレクタ定義の.AFDefaultFontFamily:alias
セレクタが含まれているすべてのコンポーネントに影響します。
図3-1に、同じページの2つのインスタンスを示します。図3-1の下部にあるページのインスタンスは、skyros
スキンの.AFDefaultFontFamily:alias
グローバル・セレクタに指定されたデフォルト値を使用してレンダリングされます。図3-1の上部にあるページのインスタンスは、.AFDefaultFontFamily:alias
および.AFDefaultFont
グローバル・セレクタを次のように変更するADFスキンを使用してレンダリングされます。
.AFDefaultFontFamily:alias {font-family: Georgia;} .AFDefaultFont:alias {font-size: 12pt;}
ページ上のテキストをレンダリングするコンポーネント(たとえば、af:showDetailItem
はWelcomeをレンダリングし、af:link
コンポーネントはLoginをレンダリングします)は、アプリケーションで使用するADFスキンの.AFDefaultFontFamily:alias
グローバル・セレクタによって指定されたフォント・ファミリを使用してレンダリングされます。
図3-1 グローバル・セレクタ
作成したADFスキンでは、拡張元のADFスキンで定義されているグローバル・セレクタ別名を継承します。新規グローバル・セレクタ別名をADFスキン・ファイルで作成することもできます。詳細は、「グローバル・セレクタ別名の使用」を参照してください。
コンポーネント固有セレクタはADFスキニング・フレームワークによって公開されるセレクタであり、これらを使用すると、対応するADF FacesコンポーネントとADFデータ視覚化コンポーネントのうち、スタイル・プロパティを定義できるものを特定できます。たとえば、図3-2に、ソース・エディタおよびセレクタ・エディタでのADF Faces button
コンポーネントのセレクタを示します。ボタンで表示されるフォントの色を決定するプロパティの値は「Properties」ウィンドウでRed
に変更されています。
図3-2 buttonコンポーネントのスキン・セレクタ
コンポーネント固有のセレクタの詳細は、「コンポーネント固有セレクタの使用」を参照してください。グローバル・セレクタ別名の詳細は、「グローバル・セレクタ別名の使用」を参照してください。
多くのADFスキン・セレクタが擬似要素を公開しています。擬似要素は、スタイルのプロパティを定義できるコンポーネントの特定の領域を示します。疑似要素は、コロン(:)2つで始まり、その後にセレクタが表すコンポーネントの部分が続きます。たとえば、図3-3に、af|chooseDate
セレクタによって公開されているweek-header-row
擬似要素を使用して、カレンダ・グリッドの外観のスタイル・プロパティをどのように構成できるかを示します。図3-3では、week-header-row
擬似要素のbackground-color
プロパティがGray
に設定されています。
図3-3 日付の選択コンポーネントの擬似要素
アイコンをレンダリングするADF Facesコンポーネントでは、ベース・アイコン・イメージのセットを使用してレンダリングします。たとえば、background-image
プロパティの値としてイメージを指定する場合はCSSコード・エントリがソース・ファイルに表示されるのとは対照的に、これらのアイコン・イメージのCSSコード・エントリはADFスキンのソース・ファイルに表示されません。かわりに、ADFスキニング・フレームワークは、レンダラで使用するアイコン・イメージを登録します。
ADFスキン・セレクタは、コンポーネントでレンダリングされるアイコン・イメージを特定する擬似要素に2つの命名規則を使用します。これらの擬似要素の名前は、-icon
または-icon-style
で終わります。図3-4に、「パネル・アコーディオン」セレクタの疑似要素の例を示します。-icon-style
で終わる疑似要素は、図3-4に示すように、背景イメージを指定します。対照的に、-icon
で終わる疑似要素は、次の例のように、背景イメージを指定しませんが、IMG要素またはテキストを参照できます。
af|panelAccordion::undisclosed-icon {content "X"} af|panelAccordion::undisclosed-icon {content: url("http:server:port/img/img.png")}
図3-4 アイコン・イメージ用の「パネル・アコーディオン」擬似要素
図3-4では、undisclosed-icon-style
擬似要素によって、panelAccordion
コンポーネント内の公開されていないアイコンに使用するアイコンのスタイルを指定しています。この擬似要素は、背景イメージとしてアイコンを指定します。:hover
および:active
の各擬似要素を使用して、外観をカスタマイズします。たとえば、次の構文を記述して、エンド・ユーザーがアイコンの上にマウスを置くと背景が赤くなるようにします。
af|panelAccordion::undisclosed-icon-style:hover { background-color: Red; }
ヒント:
多くのブラウザでは、アクセシビリティ・モードの場合は背景イメージをレンダリングしません。次の例に、アクセシビリティ・モードの場合もアプリケーションによってイメージが表示される必要がある場合にこの動作を回避する方法を示します。
背景イメージとして指定されたアイコンではなく、独自のイメージを使用する場合は、最初に、背景イメージがレンダリングされないようにする必要があります。このことは、コンポーネントのセレクタ擬似要素の-tr-inhibit
ADFスキン・プロパティを次のように指定することによって行います。
af|panelAccordion::undisclosed-icon-style { -tr-inhibit: background-image; }
次に、undisclosed-icon
セレクタのcontent
プロパティの値としてレンダリングするテキストまたはイメージを指定します。たとえば、次のような構文を記述して、別のイメージを指定します。
af|panelAccordion::undisclosed-icon { content:url("images/undisclosed.png"); width: 10px; height: 10px; }
ADFスキニング・フレームワークでは、特定のアイコン・イメージが別のシナリオで使用する、数多くのグローバル・セレクタ別名も定義します。これらのグローバル・セレクタ別名は、図3-5に示すように、セレクタ・エディタのセレクタ・ツリーの「アイコン」ノードの下に表示されます。図3-5に示した.AFChangedIcon:alias
により、変更されたアイコンが、そのアイコンを使用するすべてのコンポーネントにグローバルに設定されます。
図3-5 アイコンのグローバル・セレクタ別名
ADFスキンがSkyros ADFスキンから拡張されている場合、「ADFスキン・デザイン・エディタのイメージおよび色の変更」で説明しているように、デザイン・エディタから起動する「アイコンの置換」ダイアログを使用して、これらのアイコンを表示および変更することもできます。図3-6に、Skyros ADFスキンから拡張したADFスキン用に表示されるダイアログを示します。このダイアログを使用すると、複数のアイコンをエクスポートまたはインポートしたり、「新規アイコン・ソース」フィールドをダブルクリックして個々のアイコンを置換したりできます。
図3-6 「ステータス・アイコン」用のデザイン・エディタの「アイコンの置換」ダイアログ
詳細は、「ADFスキンのイメージおよび色の使用」を参照してください。
ADFスキンのソース・ファイル内のエントリ数を最小化するために、ADFスキン・セレクタおよびグローバル・セレクタ別名をグループ化できます。グループ化したセレクタは、図3-7に示すように、セレクタ・エディタのセレクタ・ツリー内にある「グループ化したセレクタ」ノードの下にレンダリングされます。プレビュー・ペインの「表示モード」リストには、グループ化したすべてのセレクタが表示されます。
セレクタ・エディタではグループ化したセレクタを指定する方法がないため、ソース・エディタを使用して、グループ化したセレクタに含めるセレクタまたはグローバル・セレクタ別名あるいはその両方を指定します。各セレクタをカンマ(,
)で区切って、グループ化したセレクタに含めます。
図3-7 セレクタ・ツリーでのグループ化したセレクタ
レンダリングする1つのADFスキン・セレクタのコンポーネントが、そのコンポーネントをレンダリングするページ内の別のコンポーネントの下位コンポーネントである場合、下位セレクタによって、そのADFスキン・セレクタ(下位セレクタ)のスタイル・プロパティが定義されます。たとえば、inputText
コンポーネントがtable
コンポーネント内にレンダリングされるときに、背景色にGreen
を使用してinputTextコンポーネントのコンテンツ領域をレンダリングするとします。このシナリオでは、次の例のような下位セレクタを指定します。
af|table af|inputText::content { background-color: Green; } af|inputText::content { background-color: Red; }
実行時に、table
コンポーネント内にレンダリングされるinputText
コンポーネントのコンテンツ領域の背景色はGreen
になります。table
コンポーネントの外部にレンダリングされる他のinputText
コンポーネントの外観は、ADFスキン内の他の場所で定義されたスタイル・プロパティ(Red
など)によって決定されます。
下位セレクタは、空白で区切られた2つ以上のセレクタで構成されています。下位セレクタを構成すると、図3-8に示すように、セレクタ・エディタでは、下位セレクタが含まれているセレクタの下に下位セレクタ・ノードが表示されます。
図3-8 セレクタ・ツリーでの下位セレクタ
セレクタ・エディタでは下位セレクタを指定する方法がないため、ソース・エディタを使用して、下位セレクタに指定するセレクタまたはグローバル・セレクタ別名あるいはその両方を指定します。各セレクタは空白で区切ります。
CSS仕様では、セレクタが特定の状態にある場合のスタイル・プロパティを定義するために使用される:hover
や:active
などの擬似クラスを定義しています。これらの擬似クラスは、ほとんどすべてのADF Facesコンポーネントに適用できます。また、ADFスキニング・フレームワークには、特化された機能のための、追加的な擬似クラスが備えられています。たとえば、ブラウザのロケールが右から左方向への言語(:rtl
)である場合、またはドラッグ・アンド・ドロップ操作(:drag-target
および:drag-source
)の場合に適用する擬似クラスがあります。ADFスキンのソース・ファイルで擬似クラスを指定するために含める構文では、次のフォーマットを使用します。
adfskinselector:pseudo-class
adfskinselector::pseudo-element:pseudo-class
図3-9に、エンド・ユーザーがカーソルを図3-9のリンク上に置いたときにpanelList
コンポーネントのリンクがオレンジにレンダリングされるようにADFスキンのソース・ファイルで記述した:hover
擬似クラスの構文(af|panelList::link:hover {color: Orange;}
)を示します。
図3-9 パネル・リスト・リンクの擬似クラス構文および実行時の動作
一部のコンポーネントは、他のコンポーネントに比べて擬似クラスをより活用しています。たとえば、panelBox
コンポーネントのセレクタは、擬似クラスを活用して、様々な状態(アクティブ、無効またはビジーなど)における外観を定義します。セレクタ・エディタのセレクタ・ツリーでpanelBox
コンポーネントのセレクタを選択し、Skyros ADFスキンから拡張したADFスキン内の使用可能な擬似クラスのリストを表示するために「擬似クラスの追加」アイコンをクリックした場合に表示される使用可能な擬似クラスのリストを図3-10に示します。
図3-10 panelBoxコンポーネントのセレクタの擬似クラス
擬似クラスは、セレクタによって公開されている擬似要素にも適用できます。代表的な例として、panelBox
コンポーネント・セレクタの擬似要素をあげることができます。図3-11に、セレクタ・エディタのセレクタ・ツリー内に表示された、panelBox
コンポーネント・セレクタによって公開されているcenter
擬似要素が受け入れる擬似クラスのリストを示します。これらの数多くの擬似クラスを使用して、panelBox
コンポーネントの外観を、アプリケーション開発者がこのコンポーネントの属性に設定した値に応じて定義できます。たとえば、core
およびhighlight
擬似クラスでは、アプリケーション開発者がpanelBox
コンポーネントのramp
属性をcore
またはhighlight
に設定した場合に対応する外観を定義します。
図3-11 center擬似要素の擬似クラス
次に、ADF Facesセレクタによって使用される一般的な擬似クラスを示します。
ドラッグ・アンド・ドロップ: 使用可能な2つの擬似クラスとして、ドラッグを開始するコンポーネントに適用され、ドラッグが終了したら削除される:drag-source
、および現在のドラッグのドロップ先のコンポーネントに適用される:drop-target
があります。
標準: CSSでは、:hover
、:active
、:focus
などの擬似クラスは、コンポーネントの状態とみなされます。コンポーネントへのスキンの適用にも、これと同じ考え方が当てはめられます。コンポーネントの状態は、read-only
またはdisabled
などです。同じセレクタに状態を組み合せると、すべての状態が満たされた場合にのみセレクタが適用されます。
右から左: ブラウザで言語の読み方向が右から左の際に、スタイルまたはアイコンの定義を設定する場合にこの擬似クラスを使用します。その他の典型的なユース・ケースは非対称のイメージです。読み方向が右から左のイメージを使用するスキン・セレクタを設定する際には、イメージを反転する必要があります。セレクタの最後に:rtl
疑似クラスを追加し、反転イメージ・ファイルを指すようにします。スキン・エディタのプレビュー・ペインは、反転イメージ・ファイルに加えた変更をレンダリングしません。次のSkyrosスキンからの例は、右から左に表記される言語を使用するブラウザでレンダリングするときにcalendar
コンポーネントのtoolbar-day-hover-icon
疑似要素が参照するイメージを示します。
af|calendar::toolbar-day-hover-icon:rtl { content: url(/afr/cal_day_ovr_rtl.png); width: 16px; height: 16px; }
:rtl
は、スキン・アイコンへの適用にも使用できます。詳細は、「ADFスキンのイメージおよび色の使用」を参照してください。
インライン編集: この擬似クラスは、ブラウザで編集するために、コンポーネント・サブツリーがアプリケーションによりアクティブ化される場合に適用されます。たとえば、:inline-selected
は、アクティブでインラインでの編集が可能なサブツリーで、現在選択されているコンポーネントに適用される疑似クラスです。
メッセージ: この擬似クラスは、:fatal
、:error
、:warning
、:confirmation
および:info
のCSS擬似クラスを使用して、コンポーネント・レベルのメッセージ・スタイルを設定するために使用されます。詳細は、「メッセージに適用するADFスキン・プロパティの設定」を参照してください。
注意:
セレクタ・ツリーに表示されるグローバル・セレクタ別名は、特別なタイプの擬似クラスです(:alias
)。詳細は、「グローバル・セレクタ別名の使用」を参照してください。
ADFスキニング・フレームワークでは、ADFスキン・プロパティの数を定義します。ユーザーのブラウザではなく、WebアプリケーションがADFスキン・プロパティを解釈します。構成した場合、ADFスキン・プロパティを使用して次のことを実行できます。
-tr-rule-ref
プロパティを使用して、他のセレクタのスタイルを参照します。
独自のグローバル・セレクタ別名を作成し、-tr-rule-ref
プロパティを使用して他のセレクタと組み合せます。詳細は、「グローバル・セレクタ別名の作成」、「グローバル・セレクタ別名の変更」および「グローバル・セレクタ別名の適用」を参照してください。
-tr-inhibit
スキン・プロパティを使用して、ADFスキンで定義されたスタイルを抑制します。
-tr-inhibit
スキン・プロパティを使用して、ベース・スキンから継承されたCSSプロパティを抑制またはリセットします。たとえば、-tr-inhibit:padding
プロパティは継承されたパディングを削除します。-tr-inhibit:all
プロパティを使用すると、継承されたすべてのプロパティが削除(クリア)されます。抑制するプロパティ名は、ベース・スキンのプロパティ名と完全に一致する必要があります。
-tr-property-ref
プロパティを使用して、別のセレクタで定義されたプロパティの値を参照します。
詳細は、「別のセレクタのプロパティ値の参照」を参照してください。
-tr-children-theme
プロパティを使用して、子コンポーネントのテーマを構成します。
Altaスキン(およびAltaスキンを拡張したスキン)はテーマを使用しません。
スタイル・プロパティが指定されたADFスキン・セレクタ
スキン・スタイル・プロパティを使用すると、アプリケーション全体のコンポーネントのレンダリングをカスタマイズできます。CSSプロパティは、値とともにSkin
オブジェクトに格納され、コンポーネントのレンダリング時に使用できます。たとえば、af|breadCrumbs{-tr-show-last-item: false}
において、スキン・プロパティ-tr-show-last-item
は、breadCrumbs
コンポーネントのナビゲーション・パスの最後のアイテムを非表示にするように設定されています。
すでに説明したように、ADFスキン・プロパティを使用すると、アプリケーション全体のコンポーネントのレンダリングをカスタマイズできます。これは、コンポーネントのインスタンスが後でstyleClass
属性を使用して参照するスタイル・クラスのADFスキン・プロパティを構成するなどして、ADFスキン・プロパティを使用してアプリケーションのコンポーネントの特定のインスタンスをカスタマイズできないことを意味します。
ADFスキニング・フレームワークでは+
および-
演算子も提供されており、これらを使用して、別のセレクタの色プロパティやフォント・プロパティに設定した値に関連付けてセレクタの色プロパティやフォント・プロパティを設定できます。このことは、色の範囲をセレクタに適用したり、フォント間の相対的なサイズを維持する場合に役立ちます。
例3-1に、この機能を色プロパティに利用するために記述した構文を示します。1つのグローバル・セレクタ別名で背景色を定義し、別のグローバル・セレクタ別名(.fooBackgroundColorTest
)で、-
演算子を使用してこの背景色を適用します。例3-1でも、この機能をフォント・プロパティに利用するために記述した構文を示します。1つのグローバル・セレクタ別名(.FontSizeTest:alias
)でフォント・サイズを定義し、.fooFontTestIncrease
で+
演算子を使用してこのフォント・サイズを増やします。
図3-12に、次の例のように、コンポーネントのstyleClass
属性の値としてfooFontTestIncrease
およびfooBackgroundColorTest
スタイル・クラスを指定して、af:outputLabel
コンポーネントにこれらのスタイル・クラスを適用した場合、例3-1で定義したスタイル・クラスがどのように、これらのコンポーネントのインスタンスの実行時の外観に影響を与えるかを示します。
<af:outputLabel value="Increase font-size" id="ol2" styleClass="fooFontTestIncrease"/>
図3-12 演算子を使用した色の適用とフォント・サイズの変更
スタイル・クラスの詳細は、「スタイル・クラスの使用」を参照してください。
例3-1 演算子を使用した色の適用とフォント・サイズの変更
.FontSizeTest:alias { font-size: 30px; } .BaseBackgroundColor:alias { background-color: #0099ff; } .fooFontTestIncrease { -tr-rule-ref: selector(".FontSizeTest:alias"); font-size: +20px; } .fooBackgroundColorTest { -tr-rule-ref: selector(".BaseBackgroundColor:alias"); background-color: -#333333; } af|outputLabel { -tr-rule-ref: selector(".BaseBackgroundColor:alias"); -tr-rule-ref: selector(".FontSizeTest:alias"); color: Red; }
JDeveloperのADFスキンのエディタ内でいくつかの方法によってADFスキンで設定するADFスキン・セレクタおよびCSSプロパティの参照情報にアクセスできます。アクセスできる参照情報には、ADFスキン・セレクタ用の次の参照ドキュメントが含まれます。
Oracle ADF Facesスキン・セレクタ・タグ・リファレンス
Oracle ADFデータ視覚化ツール・スキン・セレクタ・タグ・リファレンス
これらの参照ドキュメントには、ドキュメント・ライブラリからアクセスするか、図3-13に示すように、セレクタ・エディタのセレクタ・ツリーで、セレクタの上にマウスを置いたときに表示される情報テキスト内のリンクをクリックして、「ヘルプ・センター」ウィンドウからアクセスできます。
図3-13 ADFスキン・セレクタの参照文献
ADFスキン・セレクタの参照情報に加えて、CSSセレクタの情報にアクセスできます。これをエディタの「ソース」タブから実行するには、図3-14で示すように、CSSプロパティを選択して[Ctrl]キーを押しながら[D]キーを押すか、セレクタを右クリックしたときに表示されるコンテキスト・メニューから、「クイック・リファレンスの表示」を選択します。
図3-14 CSSプロパティのクイック・リファレンス・ドキュメント