CSS3

@規則

@import

  編集:2022.07.12 by T.A.

mdn

スタイルシートのインポート。

@import [<url> | <string>]
 [layer | layer(<layer-ident>)]?
 <import-condition> ;

@import 規則は、他のスタイルシートからスタイル規則をインポートする(取り込む)ことを、作者に許容する。@import 規則が妥当なスタイルシートを指しているならば、ユーザー エージェントは、当の規則が在った所に、その内容が記されていたかのように扱うものとする ― ただし、次の 2 つの例外がある:

例えば、[import されたスタイルシート内のスタイル規則]の中の各宣言は、それをインポートしたスタイルシートの中の @import の地点に、当のスタイル規則がそのまま記されたかのように、カスケードとやりとりする。

@import 規則は、同じスタイルシート内の[@charset/名前のみを供する @layer 定義]を除く、他のすべての妥当な[at-規則/スタイル規則]より先行していなければならない ― さもなければ @import 規則は無効になる。

<url> | <string>
インポートされることになるスタイルシートの URL を与える。

<string> が供されている場合、それは、同じ引数を伴う 1 個の <url> として解釈するものとする。

以下のCSSが組み込んであります:

Test.css:

開始<SPAN class=T1>テスト<SPAN>SPAN要素</SPAN></SPAN>終了

[layer | layer(<layer-ident>)]?
省略可能な[layer キーワード/layer() 関数]は、[無名な自前のカスケード層/所与の名前を伴うカスケード層]にスタイルシートの内容をあてがう。
<import-condition>
[supports( [<supports-condition> | <declaration>] )]? <media-query-list>?

インポート条件 と総称される、省略可能な[supports()/<media-query-list>]は、当のスタイルシートが、どのような条件の下で適用されるかを言明する。

layer()
layer(<layer-name>)

<layer-name><ident> [ '.' <ident> ]*@layer

supports()
supports( [<supports-condition> | <declaration>] )

<media-query-list>
インポート条件の <media-query-list> に値 all を指定しても、同じ効果になる。→条件付き@import規則
<supports-condition>
supports_condition 生成規則に対応し、@supports 条件として解釈される。
<declaration>
declaration 生成規則)が与えられた場合、supports_declaration_condition 生成規則として解釈した上で(すなわち、暗黙の丸括弧が追加される)、<supports-condition> として扱うものとする。

次の 条件付き @import 規則 は、ユーザー エージェントが display: flexサポートする場合に限り、スタイルシートを読み込むことに加え、表示域横幅が 400px 以下の携帯機器handheldに限り、スタイルシートを適用する:

@import url("narrow.css") supports(display: flex) handheld and (max-width: 400px);

次のインポートは、2 つのカスケード層 ― 順に、framework component 層、無名な層 ― の中にスタイルシートを読み込む:

@import url("tabs.css") layer(framework component);
@import url("override.css") layer();

次の 2 行(url() によるものと、文字列そのままのもの)は、意味的に等価な @import 構文になる:

@import "mystyle.css";
@import url("mystyle.css");
条件付き @import 規則

インポート条件は、[ある媒体/ある特能のサポート]に依存するインポートを許容する。インポート条件が無い下では、無条件にインポートされる(インポート条件の <media-query-list> に値 all を指定しても、同じ効果になる)。インポート条件が合致しない場合、インポートされるスタイルシート内の規則は適用されない ― インポートされるスタイルシートが、所与の媒体クエリを伴う[@media@supports]ブロックで括られたときとちょうど同じく。

@import 規則を媒体に依存させる例を以下に示す:

@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import url("narrow.css") handheld and (max-width: 400px);

したがってユーザー エージェントは、インポート条件が合致しない条件付きインポートについては、フェッチしなくともよい。加えて、インポートによるスタイルシートの適用が <supports-condition> により阻まれる場合、そのスタイルシートは(他のリンクを通して読み込まれない限り)fetch しないものとする ― その import 規則に対応する CSSImportRule.styleSheet 値は、(他のリンクを通して読み込まれる場合でも) null を返すものとする。

作者が、より新しいユーザー エージェントのネットワーク処理能には影響しないよう、旧来のユーザー エージェントにフォールバック規則を供する方法を、次の規則に示す:

@import url("fallback-layout.css") supports(not (display: flex));
@supports (display: flex) {
  ...
}

<media-query> は、media_query_list 生成規則に対応し、媒体クエリとして解釈される。<supports-condition> は、supports_condition 生成規則に対応し、@supports 条件として解釈される。<supports-condition> に代えて <declaration>declaration 生成規則)が与えられた場合、supports_declaration_condition 生成規則として解釈した上で(すなわち、暗黙の丸括弧が追加される)、<supports-condition> として扱うものとする。

例えば、次の 2 行は等価になる:

@import "mystyle.css" supports(display: flex);
@import "mystyle.css" supports((display: flex));

インポート条件の評価とその全部的な構文は Media Queries [MEDIAQ]、および CSS Conditional Rules [CSS-CONDITIONAL-3] にて定義される。


テスト
HTML:

ここに表示
HTML:

ここに表示
スクリプト:


スクリプト:



表示内容:
表示内容: