如何在使用变量时阻止CSS覆盖先前的值

时间:2017-08-17 15:35:57

标签: css css-variables

所以,我正在尝试设计一个样式表,它将为我们提供快速简便的自定义选项(一些团队成员对CSS的理解有限,构建一个'主题表'可能会更安全容易编辑)

我正在声明我的变量:root并稍后在css文件中使用它们,但我观察到如果css找不到变量,它会恢复为默认值而不是使用之前提供的值CSS。

:root {
    --global-font: empty;
    --global-font-color:empty;
    --global-bg-color: #282a33;
}

我目前正在设置它继承作为尝试解决此问题,但仍然从其父容器中提取值,并且网页已经选择了默认主题,如果我们继承,它通常会破坏它们。

body
{
    font: var(--global-font,inherit);
    color: var(--global-font-color,inherit);
    background-color:var(--global-bg-color,inherit);
}
  

我最终的解决方案是注释掉除了那些之外的所有变量   正在使用。这允许我在第二个中指定默认值   var()的字段除了变量之外总是默认为   存在。这不是我的目标,但我相信它   只有基本css范围内的解决方案。

1 个答案:

答案 0 :(得分:2)

很抱歉,由于级联变量的性质,无法指定var()表达式,该表达式将使其声明无效,而不会影响级联的其余部分。来自规范:

  

注意:存在invalid at computed-value time概念,因为变量不能像其他语法错误一样“早期失败”,所以当用户代理实现属性值无效时,它已经被抛弃了其他级联值

您的自定义属性必须是强制性的,您必须确保主题作者指定所有属性。