为什么没有应用我的 CSS 回退值?

Ant*_*Cat 2 html css css-variables

我想要做的是每当我删除边框颜色中的变量时--mainColor,它:root都会变为黑色,文本变为红色,但它将与颜色的回退值相同。为什么会发生这种情况?

div {
  width: 500px;
  margin: 10px;
  border-color: var(--mainColor, black);
  color: var(--mainColor, red);
  padding: var(--mainPadding, 10px);
  border: solid;
}
Run Code Online (Sandbox Code Playgroud)
<div>Element</div>
<div>Element</div>
<div>Element</div>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

dgk*_*nca 6

因为您要覆盖border-colorusingborder属性,currentColor如果您不指定颜色,则默认使用该属性。

:root {
}

div {
  width: 500px;
  margin: 10px;
  border: solid; /* moved here */
  border-color: var(--mainColor, black);
  color: var(--mainColor, red);
  padding: var(--mainPadding, 10px);
}
Run Code Online (Sandbox Code Playgroud)
<div>Element</div>
<div>Element</div>
<div>Element</div>
Run Code Online (Sandbox Code Playgroud)

或者使用border-style代替border来防止覆盖。

:root {
}

div {
  width: 500px;
  margin: 10px;
  border-color: var(--mainColor, black);
  color: var(--mainColor, red);
  padding: var(--mainPadding, 10px);
  border-style: solid;
}
Run Code Online (Sandbox Code Playgroud)
<div>Element</div>
<div>Element</div>
<div>Element</div>
Run Code Online (Sandbox Code Playgroud)