在HTML文档中,CSS3中引入的:root
伪类选择器与html
选择器相同,唯一的区别是:root
具有更高的特异性。如果它们几乎相同,那么使用html
有什么实际好处?
[我已经阅读到:root
选择器对于声明全局CSS变量(即,可以在整个HTML代码中访问的变量)很有用。但是,我可以使用html
选择器设置一个变量,该变量也将在整个HTML代码中可用。我在https://alligator.io/css/root-pseudo-class/上发现的唯一好处是,在:root
中设置的CSS变量也可以用于设置SVG图形的样式。这是唯一的好处吗?
您几乎用与:root
和<html>
都匹配的<svg>
的最后一点回答了自己的问题-或非HTML文档中的任何其他根元素。
[请记住,CSS不仅被设计为与HTML和SVG兼容,还被设计为与XML兼容,并且与XML一起,根元素可能与子元素共享相同的元素名称-因此,这是一种处理此类文档的方法,因为CSS没有提供其他选择only root元素进行样式设置的方法,因此它与:first-child
,:first-of-type
,:last-of-type
等属于同一家族。 >
我将补充说,还有格式错误的HTML文档可能
在DOM中其他位置具有非法的<html>
元素的风险。如果仅使用html
作为选择器,则还将设置其他<html>
元素的样式,如果您有普通的html { min-height: 100%; height: 100%; }
规则,则会破坏网站的布局。将其更改为html:root { ... }
可解决此问题。