[解決済み】CSSの*と*|*の違いは何ですか?
質問
CSSでは
*
は任意の要素にマッチします。
よくあること
*|*
の代わりに使用されます。
*
を使うと、すべての要素にマッチします。これは、一般にテスト目的で使用されます。
との違いは何ですか?
*
と
*|*
をCSSで表示できますか?
どのように解決するのですか?
の通りです。 W3Cセレクタ仕様 :
ユニバーサルセレクタでは、オプションで名前空間コンポーネントを指定することができます。以下のように使用します。
ns|*
名前空間 ns のすべての要素
*|*
すべての要素
|*
名前空間を持たないすべての要素
*
デフォルトの名前空間が指定されていない場合、これは *|* と同じです。それ以外の場合は ns|* と等価で、ns は既定のネームスペースです。
そのため
*
と
*|*
は常に同じとは限りません。もしデフォルトの名前空間が提供されているのであれば
*
は、その名前空間の一部である要素のみを選択します。
以下の2つのスニペットで、その違いを視覚的に確認することができます。最初の例では、デフォルトの名前空間が定義されており、そのため
*
セレクタは、ベージュ色の背景をその名前空間に属する要素にのみ適用します。
*|*
はすべての要素にボーダーを適用します。
@namespace "http://www.w3.org/2000/svg";
* {
background: beige;
}
*|* {
border: 1px solid;
}
<a href="#">This is some link</a>
<svg xmlns="http://www.w3.org/2000/svg">
<a xlink:href="#">
<text x="20" y="20">This is some link</text>
</a>
</svg>
以下のスニペットでは、デフォルトの名前空間が定義されていないので、両方の
*
と
*|*
はすべての要素に適用されるため、すべての要素にベージュの背景と黒のボーダーの両方が適用されます。つまり、デフォルトの名前空間が指定されていない場合でも、同じように動作します。
* {
background: beige;
}
*|* {
border: 1px solid;
}
<a href="#">This is some link</a>
<svg xmlns="http://www.w3.org/2000/svg">
<a xlink:href="#">
<text x="20" y="20">This is some link</text>
</a>
</svg>
BoltClockがコメントで指摘しているように(
1
,
2
のようなXMLベースの言語にのみ適用されていましたが、最新の仕様では、すべてのHTML要素(つまり、HTML名前空間の要素)は、名前空間が
http://www.w3.org/1999/xhtml
. Firefox はこの動作に従っており、すべての HTML5 ユーザーエージェントで一貫しています。詳細な情報は
この回答
.
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] <div style="display:none">によるテーブルデータの非表示。
-
[解決済み] 位置固定が効かないのが絶対のように効いている【非公開
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] SCSSとSassの違いは何ですか?
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] 最初の要素にクラスを指定するCSSセレクタ
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Google Chromeでレスポンシブメディアクエリが機能しない件
-
[解決済み] SVGの塗りつぶし色が効かない
-
[解決済み] グレーの透明な背景を設定する
-
[解決済み] :first-child が期待通りに動作しない
-
[解決済み] このベベルボタンをCSSで実現するには?
-
[解決済み] reactでスティッキーフッターを作るには?
-
[解決済み] Bootstrapコンテナが複数またはネストされていませんか?
-
[解決済み] MUIでカスタムアニメーションエフェクト@keyframesを適用する方法は?
-
[解決済み] cssのフォントサイズ14px/26pxってどうなってるの?
-
[解決済み] ChromeでCSSが効かない