11

举个例子:

.article, .note {
    color: var(--text-color, red);
 }
 .theme {
    --text-color: blue;
 }
 .theme .note {
     --text-color: unset;
 }
<section>
    <p class="article">Article</p>
    <p class="note">Note</p>
</section>
<section class="theme">
    <p class="article">Article</p>
    <p class="note">Note</p>
</section>

是否可以通过取消设置 CSS 变量再次使第二个“注释”变为红色?

我知道我只能将 CSS 变量应用于.article但假设我有很多类似的元素,我希望在其中应用主题,但只有少数例外。那么维护选择器将是相当乏味的。

我可以将主题选择器更改为,.theme :not(.note)但这不适用于.note嵌套在其他元素中的任何元素。

4

1 回答 1

14

您可以使用该值initial,因为 IE支持CSS vars,所以在这里使用不是问题initial(IE也不支持它

.article,
.note {
  color: var(--text-color, red);
}

.theme {
  --text-color: blue;
}

.theme .note {
  --text-color: initial;
}
<section>
  <p class="article">Article</p>
  <p class="note">Note</p>
</section>
<section class="theme">
  <p class="article">Article</p>
  <p class="note">Note</p>
</section>

于 2017-12-15T10:41:14.817 回答