universal selector

普遍選択子

[3] 普遍選択子 (universal selector) は、すべての要素を表す単純選択子です。

仕様書

意味

[5] 名前空間接頭辞は、それに対応すると宣言された名前空間URLを表しています。 CSS では @nemaspace @規則で、 XBL2 では xmlns 属性名前空間接頭辞宣言できます。

[13]

@namespace hoge 'http://hoge/';
hoge|* { color: blue }
... は http://hoge/ という名前空間要素の色を指定しています。

[7] 名前空間接頭辞空文字列であれば、名前空間なし (null名前空間) を表します >>2

[14] |*null名前空間要素を表しています。

[8] 名前空間接頭辞* であれば、任意の名前空間の任意の要素を表します。 null名前空間もこれに含まれます。 >>2

[15] *|*HTMLXHTML2 やその他任意の名前空間要素を表しています。

[9] 名前空間接頭辞| もなければ、既定名前空間宣言されていればその名前空間宣言されていなければすべての名前空間 (* と同じ。) の任意の要素を表します。 >>2

[16]

* { color: blue }
... はすべての名前空間の任意の要素を表しています。一方
@namespace 'http://www.w3.org/1999/xhtml';
* { color: blue }
... は HTML の任意の要素だけを表しています。

[21] 暗黙の普遍選択子 (>>18) にも既定名前空間が適用されるので、 一見名前空間の指定が無いように見えても実際には限定されていることがあります。

[22] 例えば、

@namespace 'http://hoge/';
:first-child { color: blue }
... は http://hoge/ 名前空間に属し、かつ最初の子要素であるものの色を変えています。

[41] WebVTT に対して適用される場合、 WebVTT中間節点オブジェクト要素とみなされます。 名前空間空文字列とみなされます。 >>40

構文

[4] 普遍選択子CSS修飾名局所名* であるものです >>2

[18] * のみで構成される普遍選択子 (つまり名前空間接頭辞| が無いもの) であって、単純選択子列中に他の単純選択子も含まれている場合、または直後に擬似要素がある場合は、 * を省略できます。 >>2

[19] 例えば *:first-child:first-child は等価です。 また *::after::after は等価です。

[20] しかし * は省略するべきではないと言われています。例えば div :first-child よりも div *:first-child と書いた方がわかりやすいです。 >>2 既定名前空間の影響も、明示的に書いた方がわかりやすいでしょう。
[37] とはいえ現実には * を明示することはほとんどありません。 >>20 は仕様上の要件ではなく、 単なる参考としての好ましい表現方法の提示に過ぎませんが、それにしても実情に合っていません。

大文字と小文字

[12] 名前空間接頭辞大文字小文字を区別します。

妥当性

[6] 宣言されていない名前空間接頭辞を使うと非妥当となります >>2

特異度

[23] 普遍選択子特異度の計算に含まれません。普遍選択子だけの選択子は他のどんな選択子よりも低い特異度になります。

歴史

CSS1

[35] 普遍選択子に相当するものは、最初期に仕様に含まれていました (>>34)。当時はまだ名前がついていませんでした。

[36] しかしその後 draft5 まで含まれていたものの、 draft6 では削除されています。

CSS2

[29] 普遍選択子CSS2 で導入されました。 >>33 が初出でした。

選択子3

[31] 普遍選択子名前空間接頭辞をつけて名前空間に対応させることが >>30 で提案され、 >>32 以後の選択子仕様に取り込まれています。

[39] 当初は大文字小文字を区別しないことになっていましたが、最終的には区別することとなりました。

WebVTT (2010)

[42] WebVTT 仕様書は普遍選択子WebVTTに対して適用される場合の解釈を規定しました。

関連

[17] * 以外の局所名を指定したものは型選択子と呼ばれます。

[24] 普遍選択子要素に関するものですが、属性選択子には普遍選択子に相当するものはありません。

[38] 単純選択子列には暗黙の普遍選択子が存在することがありますが、 :lang()引数単純選択子であって単純選択子列では無いため、暗黙の普遍選択子が存在することはありません。

メモ

[1] ブラウザのデフォルトスタイルをリセットする手段、ユニバーサルセレクタとタイプセレクタの違いは? | Blog hamashun.com ( 版) <http://www.hamashun.com/blog/2007/09/post_34.html>

[25] *{ margin : 0 }はもう古い!? | Emotional Web (2007-02-22 08:52:20 +09:00 版) <http://www.lllcolor.com/archives/200702/margin0.html> (名無しさん 2007-02-22 00:55:28 +00:00)

[26] 逆になんで全部指定する必要があるのか? ということだ。 UAスタイル・シートの意味は? カスケーディング・スタイル・シートの意味は?

[43] csswg: changeset 14348:ee85b0656afd ( ( 版)) <https://dvcs.w3.org/hg/csswg/rev/ee85b0656afd9051618834db58b66422c174c9ae>

[10] 芸名に句読点が含まれる芸能人の一覧 - Wikipedia () <https://ja.wikipedia.org/wiki/%E8%8A%B8%E5%90%8D%E3%81%AB%E5%8F%A5%E8%AA%AD%E7%82%B9%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E8%8A%B8%E8%83%BD%E4%BA%BA%E3%81%AE%E4%B8%80%E8%A6%A7>

[11] Allow universal selector with no namespace (SelenIT著, ) <https://github.com/w3c/csswg-drafts/commit/71dca47365c5ffe5d3bee2444c96810855c6a903>

[28] インド・ヨーロッパ祖語 - Wikipedia () <https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%89%E3%83%BB%E3%83%A8%E3%83%BC%E3%83%AD%E3%83%83%E3%83%91%E7%A5%96%E8%AA%9E>

印欧祖語の単語には、それが再建された形であることを示すために「*」(アステリスク)が付される。

[44] 祖語 - Wikipedia () <https://ja.wikipedia.org/wiki/%E7%A5%96%E8%AA%9E>

研究の過程で、ある単語が現存する文献や口頭調査で採取されたものでなく、比較言語学から推定された場合、"*"印を付けて、例えば"*kʷʰ"などと書く。これを推定形と呼ぶ。