【问题标题】:override local css variable with global variable用全局变量覆盖局部 css 变量
【发布时间】:2020-11-18 12:15:56
【问题描述】:

是否可以用全局变量覆盖局部 CSS 变量? 正如我们所知,反之亦然。如果有像!important 这样的东西来覆盖局部变量,有人可以帮忙吗?

以下面的示例为例,希望red 的优先级高于blue

 :root{
    --primarycolor: red !important; /*Like this*/
  }
  body {
    color: var(--primarycolor);
    border:2px solid var(--primarycolor);
    padding:5px;
  }
  div{
    --primarycolor: blue; /*Want to override this*/
    color: var(--primarycolor);
    border:2px solid var(--primarycolor);
    padding:5px;
  }
Check all border color - I am in body
<div>I am in div</div>

【问题讨论】:

  • 据我所知,CSS 中没有这样的功能。相反,您可以做的是使用备用值var(--primary-color, blue);。见developer.mozilla.org/en-US/docs/Web/CSS/…
  • 那么不要定义局部变量
  • @TemaniAfif 实际上我用 JS 动态更新了全局变量。谢谢,我没有提到。

标签: html css css-variables


【解决方案1】:

使用* 代替:root。它不会是一个全局变量,但仍被声明为一个全局,它将应用于所有元素(而不是被所有元素继承)

* {
  --primarycolor: red !important; /*Like this*/
}

body {
  color: var(--primarycolor);
  border: 2px solid var(--primarycolor);
  padding: 5px;
}

div {
  --primarycolor: blue; /*Want to override this*/
  color: var(--primarycolor);
  border: 2px solid var(--primarycolor);
  padding: 5px;
}
Check all border color - I am in body
<div>I am in div</div>

并且没有重要的地方将适用,因为它更具体:

* {
  --primarycolor: red;
}

body {
  color: var(--primarycolor);
  border: 2px solid var(--primarycolor);
  padding: 5px;
}

div {
  --primarycolor: blue; 
  color: var(--primarycolor);
  border: 2px solid var(--primarycolor);
  padding: 5px;
}
Check all border color - I am in body
<div>I am in div</div>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-02-27
  • 2013-05-27
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2019-07-24
相关资源
最近更新 更多