このウェブサイトはご利用の端末での閲覧に対応していません。
This website does not support your device.

@namespace”ルールCSS Namespaces Module Level 3で追加

記事Jul. 4th,2021
スタイルシートで使用する名前空間を定義する“@namespace”ルール
この記事はCSS3に対応しています。
この記事はCSS3に対応しています。

@namespace”ルール

@namespace”ルールはスタイルシートで使用される名前空間の接頭辞を定義し、名前空間に関連付けます。

@namespace”ルールで定義した名前空間の接頭辞はタイプ・セレクタ属性セレクタで選択する要素や属性を名前空間で絞り込むために使用することができます。

@namespace”ルールは@charset”ルール@import”ルールよりも後で、それ以外の有効な@ルールとスタイル規則よりも前に配置されなければなりません。

文法的に無効な“@namespace”ルールを含むスタイルシートは無効なスタイルシートとして判断され、無視されます。

@namespace”ルールの構文

@namespace”ルールは“@namespace”に続く、ホワイトスペース(半角スペース(“ ”)、タブ文字など)で区切った名前空間の接頭辞と名前空間の名前からなります。

@namespace 〚名前空間の接頭辞〛 〚名前空間の名前〛;

名前空間の接頭辞は有効なCSS識別子として記述します。定義された名前空間の接頭辞はタイプ・セレクタ全称セレクタ属性セレクタに付加することができ、接頭辞が付加されたセレクタはその名前空間に属する要素や属性のみを選択します。接頭辞は大文字と小文字が区別されます。

名前空間の名前は名前空間のURIである<url>”値、もしくは<string>”値として記述します。

名前空間の名前が空文字列である場合は属する名前空間がないことを表します。

@namespace 〚名前空間の接頭辞〛 "";

接頭辞が省略された“@namespace”ルールは既定の名前空間を定義します。名前空間の接頭辞がないセレクタは既定の名前空間に属する要素や属性を選択します。

@namespace 〚名前空間の名前〛;

同じ接頭辞に関連付けられた名前空間が複数ある場合や、既定の名前空間が複数定義されている場合は一番最後に配置された“@namespace”ルールのものが使用されます。

@namespace”ルールが定義した名前空間の接頭辞はスタイルシートの適用先の文書内での接頭辞の定義とは独立したものになり、スタイルシートの中でだけ有効です。

@namespace”ルールによる定義は“@namespace”ルールが配置されたスタイルシート内でのみ有効で、@import”ルールにより読み込まれるスタイルシートや同じ文書に読み込まれる他のスタイルシートには反映されません。

使用例

@namespace url(http://www.w3.org/1999/xhtml); /* HTML名前空間 */
@namespace svg url(http://www.w3.org/2000/svg); /* SVG名前空間 */
@namespace mathml url(http://www.w3.org/2000/svg); /* MathML名前空間 */

a {
/* 既定の名前空間(HTML)の“a”要素に適用されるスタイル */
...
}

svg|a {
/* SVG名前空間の“a”要素に適用されるスタイル */
...
}

svg|* {
/* SVG名前空間のすべての要素に適用されるスタイル */
...
}

|* {
/* 名前空間に属さないすべての要素に適用されるスタイル */
...
}

仕様書

定義されている仕様書
Level 1 Level 2 Level 3
勧告(REC) 勧告(REC) 勧告(REC)
@namespace
定義なし

定義なし

定義あり
一番上へ
トップにもどる
シェアする
シェアする
Facebookでシェアする
ツイート
Google+でシェア
Pocket
はてなブックマーク