最近のアクセス:
CSS におけるカスケードレイヤーの使用

GeneXus ではデジタル製品向けのスタイルを定義できます。特に、CSS ライブラリのインポートを含む CSS 言語を使用して、デザインシステムの [ Styles ] などでスタイルを指定することが可能です。
複数のスタイルがあると、さまざまな理由によって競合が発生します。CSS でこれを解決するためには、より具体的なスタイルを使用し、それらの優先順位を設定することが可能です。もう 1 つの方法は、カスケードレイヤーを定義することです。
カスケードは、スタイル間の競合を解決するための一連の手順です。レイヤー内に CSS を構築すると、プロジェクト内でのスタイルの優先順位を制御できます。
スタイル間の競合は、ケースに応じて解決されることを念頭に置いておく必要があります。
  • 1 つのレイヤーで行われた定義
  • 複数のレイヤーで行われた定義

1 つのレイヤーで行われた定義

このケースでは、すべての CSS (ユーザーコントロールテーマ、およびデザインシステムの CSS) が同じレイヤー内にあります。
そのため、複数のスタイルを定義した場合は、特定性が最も高いスタイル、その後に来るスタイル、のように優先されます。これは、すべてのセレクターが同じレベルにあるため、どれが適用されるかは、セレクターの特定性によって互いに競合することになります。定義された順序に関係なく、優先順位が最も高いものが競合を制し、他のものを上書きします。

複数のレイヤーで行われた定義

複数のレイヤーが定義されている場合、それらの間の競合は常に、優先順位が最も高いレイヤーのスタイルを使用して解決されます。つまり、セレクターの特定性は関係ありません。
GeneXus のレイヤーは次のようになっています:
  1. ベーススタイル (外部 CSS への参照)
    優先順位が最も低いレイヤーです。そのため、ここで定義されたスタイルは、その後のレイヤーによって変更または修正される可能性があります。たとえば、[ Base CSS ] プロパティ (Design System オブジェクト) の値 Bootstrap v3 です。
  2. ユーザー コントロール スタイル
    このレイヤーは、前のレイヤーで定義されたスタイルを変更できます。たとえば、Bootstrap v3 の値を書き換えることができます。
  3. Design System オブジェクト (DSO)
    DSO レイヤーは常に最後に追加されるレイヤーであるため、優先順位は最も高くなります。外部ユーザーコントロールや CSS のセレクターのほうに特定性があっても、DSO を上書きすることはありません。
ユーザーコントロールをビルドする際には、これらの順序を考慮する必要があります。
また、DSO を使用する Web パネルを定義する際にも、ここで説明した内容に留意してください。これは、DSO で生成された各 CSS がレイヤー内に置かれるためです。このレイヤーは、[ Tokens ] エレメント[ Styles ] エレメントで共有されます。

カスケードレイヤーの特徴

CSS カスケードレイヤーの仕組みを明確に理解しておくことが重要です。以下に、留意すべきいくつかの特徴を説明します。
  • レイヤー内での競合には特定性が適用されますが、レイヤー間での競合は、常に優先順位が最も高いレイヤースタイル (この場合は DSO) を使用して解決されます。
  • !important を使用して、レイヤーでの順序を逆にすることができます。つまり、DSO の優先順位が最も低くなり、ユーザーコントロールで設定された優先順位が DSO の既定値を上書きし、ベーススタイルがすべての設定をオーバーライドします。
  • これらのスタイルをレイヤー外で定義すると、それが最も高い優先順位になります。そのため、たとえば DSO (最後のレイヤー) のスタイルを変更することができます。

    例: @layer layer-1  
    @layer layer-2 
    @layer layer-3 
    un-layered (最も高い優先順位)
  • レイヤーは出現順に適用されます。また、最初のレイヤーは優先順位が最も低いレイヤーで、一番下に置かれます。それに対して、最後の、優先順位が最も高いレイヤーが一番上に置かれます。そのため、上の例の un-layered が削除された場合、layer-1 が最も優先順位の低いレイヤー、layer-3 が最も優先順位の高いレイヤーになります。
  • layer() 関数と @import ルールを使用して、スタイルシート全体をレイヤーに追加できます。次に例を示します。
    <style>@import url("/example.css") layer(<name>)</style>
  • グローバルキーワードを使用して、いくつかの方法でカスケードを逆にすることができます。詳細については、CSS カスケードレイヤーの説明を参照してください。

参考情報

ブラウザーの互換性
CSS カスケードレイヤー
  

サブページ
Created: 23/04/24 18:13 by Admin Last update: 23/04/24 18:13 by Admin
カテゴリ
Powered by GXwiki 3.0