如何覆盖具有 :root 的样式

san*_*uda 3 css

我想覆盖用:root伪类定义的样式。

我有像下面这样的CSS:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div><p>hello world</p></div>

    <style type="text/css" media="screen">
        :root p{
          color: red !important;
        }
        html > div > p{
          color: green !important;
        }
    </style>    
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想显示绿色而不是红色。我怎样才能覆盖样式

Ori*_*iol 8

html > div > p不会选择您的元素,因为和 之间有一个body元素。htmldiv

html > body > div > p确实选择了您的元素,但特异性低于:root p,它具有伪类。

技巧很简单:两个伪类比一个伪类更具体。使用:root:root p

:root p {
  color: red;
}
:root:root p {
  color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div><p>hello world</p></div>
Run Code Online (Sandbox Code Playgroud)