Html 根真的没用吗?
我知道Html 根真的没用吗?,html,css,css-selectors,pseudo-class,Html,Css,Css Selectors,Pseudo Class,我知道:root可以用于选择html文件的html标记,并选择svg标记svg文件(关于XML文件的样式设计,这是一件非常奇怪的事情,对我来说并不适用),但我不认为选择:root而不是html或svg选择器更有意义。使用:root,对HTML和SVG应用相同的样式对我来说真的很奇怪。我相信这是不现实的 唯一有效的应用程序是:rootI,它可以用来覆盖html样式(因为伪类选择器比类型选择器具有更高的优先级),但我会避免经常覆盖html,并在以后放置特定的CSS文件链接以避免这种需要 所以问题是:
:root
可以用于选择html文件的html
标记,并选择svg
标记svg
文件(关于XML文件的样式设计,这是一件非常奇怪的事情,对我来说并不适用),但我不认为选择:root
而不是html
或svg
选择器更有意义。使用:root
,对HTML和SVG应用相同的样式对我来说真的很奇怪。我相信这是不现实的
唯一有效的应用程序是:root
I,它可以用来覆盖html
样式(因为伪类选择器比类型选择器具有更高的优先级),但我会避免经常覆盖html
,并在以后放置特定的CSS文件链接以避免这种需要
所以问题是:
:root
是否有任何现实世界中的应用程序,它不仅仅是html
(或svg
用于svg文件)的一个奇怪的替代品?对于绝大多数使用html的作者来说,之间只有两个实际的区别:root
和html
:
:root
,作为一个伪类,更为具体。如果您需要的类型选择器的特异性较小,则完全可以使用html
而不是:root
:root
可用于对Internet Explorer 8及更早版本隐藏规则(该用例在2017年可能并不流行,但在五年前相当普遍):root
伪类实际上主要用于匹配任意文档中的根元素的用例,而不必知道元素的类型,这意味着基于XML的语言,甚至其他非基于XML的文档类型。请记住,从第3级开始,选择器模块设计用于各种文档语言的各种用途,而不仅仅是使用CSS设置HTML元素的样式(这就是为什么它现在被简单地称为“选择器”,而不是“CSS选择器”,尽管它是CSS模块)
此外,对于根元素没有自己类型的宿主语言(例如,在
元素
可能既是根元素又是嵌套元素的语言中),:root
是区分根元素和嵌套元素的必要条件(尽管存在替代项,如:not(:nth child(n))
在选择器3中具有相同的特异性,或:not(*>*)
在选择器4中具有零特异性。关于案例2,我将使用条件注释来应用IE8-的特定规则。使用IE8样式作为默认设置并在其他浏览器中覆盖它似乎是非常错误的方法。@Vadim Ovchinnikov:是的,我也这么做,很少使用选择器黑客。尽管如此,许多其他作者使用它们,这是一个常见的黑客攻击的例子。