采用以下示例:
.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变量使第二个“Note”再次变为红色?
我知道我只能将CSS变量应用于.article
但是假设我有很多类似的元素,我希望应用主题,但只有少数豁免。然后维护选择器会相当繁琐。
我可以将主题选择器更改为.theme :not(.note)
,但这不适用于嵌套在其他元素中的任何.note
元素。
答案 0 :(得分:7)
您可以使用值initial
,因为IE doesn't支持CSS vars,这里使用initial
并不是问题(也是IE doesn't support it)
.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>