CSS 变量 - 交换值?

标签 css swap css-variables

我有一个非常简单的 CSS 变量问题。我想交换两个 CSS 变量,基本上相当于 ES6 中的 [a, b] = [b, a] 的 CSS。这是一个简单的例子:

<p>White background</p>
<button>Black background</button>
<div>
  <p>Black background</p>
  <button>White background</button>
</div>
:root {
  --primary-color: #fff;
  --secondary-color: #000;
}

body {
  background-color: var(--primary-color);
}

button {
  background-color: var(--secondary-color);
}

div {
  /* i'd like to do the following: */
  --primary-color: var(--secondary-color);
  --secondary-color: var(--primary-color);

  /* so here, `--primary-color` would be `--secondary-color` from `:root`
   * and any children have these colors swapped as well
   */
  background-color: var(--primary-color);
}

但是,这会失败,因为 CSS var() 是实时绑定(bind)。我在这里错过了什么吗?或者这是规范当前的工作方式?

最佳答案

您正在创建循环依赖性,因为您正在使用另一个属性定义每个属性,而这是行不通的。相反,您可以通过引入更多变量来尝试这样的事情:

:root {
  --p:#fff;
  --s:#000;
  --primary-color: var(--p);
  --secondary-color: var(--s);
}

body {
  background-color: var(--primary-color);
}

button {
  background-color: var(--secondary-color);
}

div {
  /* i'd like to do the following: */
  --primary-color: var(--s);
  --secondary-color: var(--p);
  
  background-color: var(--primary-color);
}
<p>White background</p>
<button>Black background</button>
<div>
  <p>Black background</p>
  <button>White background</button>
</div>

关于CSS 变量 - 交换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50568291/

相关文章:

css - 由于 CSS 自定义属性而导致 Sass 中断?

css - 如何重置 CSS 变量(又名自定义属性)并使用后备变量?

html - Javascript CSS/HTML5 中的标题和通用选择器 (*)

c - 我应该使用什么循环以及如何使用?

javascript - 选定的 HTML DIV 元素可拖动使用 JQueryUi draggable

java - 将 char 数组中的特定字符与另一个字符交换 java

c - 如何捕获此交换树代码中的数据?

css - 如何在 calc() 表达式中获取 CSS 变量的负值?

css - 在 HTA 中失去焦点时,按钮的虚线边框变为两条实线边框

css - ntd child 不能正常工作如何解决