【发布时间】:2021-10-03 09:17:34
【问题描述】:
我想知道是否可以仅在定义了 css 变量时才应用 CSS 规则。我已经看到可以定义一个默认值,例如:
background-color: var(--bgColor, red);
但我认为这在我的项目中不起作用,因为我想要的是,当未定义变量时,如果该行在 CSS 中不存在,它将具有的样式。
我添加了一个代码笔,以便更容易理解我在说什么:
https://codepen.io/xmorelll/pen/bGWLoaL
.container {
margin: 5px;
}
.content {
padding: 5px;
display: inline-block;
height: 100px;
width: 100px;
border: 1px solid black;
background-color: var(--bgColor) !important;
}
<div class="container">
<div class="content" style="background-color: blue">blue</div>
</div>
<div class="container">
<div class="content" style="background-color: yellow">yellow</div>
</div>
<div class="container" style="--bgColor: red">
<div class="content" style="background-color: green">red</div>
</div>
<div class="container">
<div class="content" style="--bgColor: green">green</div>
</div>
【问题讨论】:
-
你到底想做什么?如果没有定义 CSS 变量,它就不会被应用,就像你说的那样。因此,如果
--bgColor未定义而您设置了background-color: var(--bgColor),则该声明将不会执行任何操作。 -
如果在我的 codepen 中是这样的话,前两个框的背景颜色将是蓝色和黄色。
-
您会接受“不,这不可能”的回答吗?因为是这样的
-
是的,可悲的是,对我来说这是一个有效的答案。谢谢!
-
如果您可以使用 Javascript,那么您的问题有一个解决方案,您可以捕获缺少的 var() 并使用 javascript 添加/更新它们,请参阅此相关问题:stackoverflow.com/questions/36088655/…
标签: css css-variables