私はこれについて多くの情報を見つけることができないようです。
Smashing Magazine はhtml
および:root
は同じものですが、確かに小さな違いがあるはずです。
それらの間の1つの技術的な違いは:root
-疑似クラスであることはhtml
(型セレクター)よりも特定性が高い
:root {
color: red
}
html {
color: green;
}
<div>hello world</div>
したがって、上記の例では、:root
セレクターはhtml
セレクターをオーバーライドし、テキストは赤で表示されます。
HTMLドキュメントの場合、違いはありません。ルート要素は<html>
タグであるため、html{}
と:root{}
は(特異性の違いを除いて)意味的に同等です。
ただし、CSSはHTMLだけでなく、すべてのXMLのようなドキュメントにも適用できます。これが:root
が存在する理由です。ドキュメントのタイプに関係なく、ドキュメントのルート要素をターゲットにします。 CSSの圧倒的多数のユースケースがHTMLドキュメントのスタイルを設定しているため、ほとんどの人は違いに戸惑います。
例:CSSを使用してSVGドキュメントのスタイルを設定できます。それをスタイリングするとき、ルート要素は(明らかに;-))html
ではなくsvg
になります。以下の SVGタグ のリストを参照してください。