是:root真的没用?

时间:2017-07-29 09:43:53

标签: html css css3 css-selectors pseudo-class

我知道:root可用于为HTML文件选择html标记,并为svg文件选择svg标记(关于样式化XML文件,这确实是真的很奇怪,不适合我),但我认为更喜欢:root而不是htmlsvg选择器。使用:root对HTML和SVG应用相同的样式对我来说似乎很奇怪。我确信这不是现实的情况。

唯一有效的:root I found应用程序可用于覆盖html样式(因为伪类选择器的优先级高于类型选择器),但我会避免经常覆盖html并稍后放置特定的CSS文件链接以避免这种需要。

所以问题是::root是否有任何真实世界的应用,它不仅仅是html(或svg对于SVG文件的奇怪替代品)?

1 个答案:

答案 0 :(得分:4)

对于绝大多数使用HTML的作者而言,:roothtml之间只存在两个实际差异:

    作为伪类的
  1. :root更具体。如果您需要类型选择器的较低特异性,则使用html代替:root完全可以接受。
  2. :root可用于隐藏Internet Explorer 8及更早版本的规则(一个可能在2017年不流行但在十年前相当普遍的用例)。
  3. 除此之外,:root伪类确实主要是为了匹配任意文档中根元素的用例,而不必知道元素的类型,这意味着基于XML的语言,甚至其他非基于XML的文档类型。请记住,从第3级开始,选择器模块设计用于各种文档语言的各种用途,而不仅仅是使用CSS设置HTML元素样式(这就是为什么它现在简称为#34;选择器&# 34;而不是" CSS选择器",尽管它是一个CSS模块。)

    此外,对于根元素没有自己类型的主机语言(例如,在element可能既是根元素又嵌套的语言中),:root是必需的用于区分根元素和嵌套元素(尽管存在替代方法,如选择器3中具有相同特异性的:not(:nth-child(n)),或选择器4中具有特异性的:not(* > *))。