为什么伪元素中不继承 CSS 变量?

Mic*_*ego 5 css pseudo-element

我发现了一些奇怪的东西,并且在 CSS 自定义属性规范中找不到任何相关内容。这是一个简单的例子:https ://codepen.io/bakura10/pen/RwxNPxz

:root {
  --background: red;
}

.test {
  position: relative;
}

.test::before {
  content: '';
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: var(--background);
}
Run Code Online (Sandbox Code Playgroud)
<div class="test">
  TEST
</div>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,尽管变量 --background 是在根范围定义的,但它根本无法从 before 或 after 伪元素访问。

为什么会这样?

Dav*_*ter 1

不,它正在工作,你应该给出你的:before position:absolute(它没有任何宽度或高度)。

:root {
  --background: red;
}

.test {
  position: relative;
/*   background: var(--background); */
}

.test::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
/*   background-color: red; */
  background: var(--background);
}
Run Code Online (Sandbox Code Playgroud)
<div class="test">
  TEST
</div>
Run Code Online (Sandbox Code Playgroud)

  • 发现了一个与此相关的错误报告。对于那些遇到同样问题的人:https://bugs.chromium.org/p/chromium/issues/detail?id=1174553&amp;q=css%20variables%20not%20define&amp;can=2 (7认同)