css - 根据类名动态更改变量

标签 css sass

假设我有这样的事情:

.object {
  $primary-color: blue;
  h1 {
    font-size: 40px;
    color: $primary-color; 
  }
  p {
    font-size: 20px;
    color: $primary-color; 
  }
}

现在我将拥有一个蓝色物体。但是假设我想制作相同的对象,但是用红色,写起来可能很直观
.object red {
  $primary-color: red;
}

并期望所有 $primary-color 都变为红色,但这在 SCSS 中无效。我要写的是:
.object red {
  $primary-color: red;
  h1 { color: $primary-color; }
  p { color: $primary-color; }
}

如果我这样做,我仍然可以在 h1 中保持 40px 字体大小,在 p 中保持 20px 字体大小,并将所有颜色更改为红色。但是,一旦我的代码变得更大,这将变得越来越难以维护。

SCSS 是否提供任何工具来使此任务更加模块化和可维护?

最佳答案

当然,SCSS 提供了这样的功能,但您也可以使用 CSS 变量来实现它:

.object h1 {
  font-size: 40px;
  color: var(--p, blue);
}

.object p {
  font-size: 20px;
  color: var(--p, blue);
}
.red {
  --p:red;
}
.other-color {
  --p:rgb(15,185,120);
}
<div class="object">
<h1>Blue title</h1>
<p>blue text</p>
</div>
<div class="object red">
<h1>red title</h1>
<p>red text</p>
</div>
<div class="object other-color">
<h1>red title</h1>
<p>red text</p>
</div>

关于css - 根据类名动态更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50731596/

相关文章:

css - 如果下拉菜单项的样式设置在菜单右侧,则无法选择

jQueryUi 对话框卡在左上角(不可移动)

html - 分机号 : How to write custom styles CSS/SCSS for Grid column header?

css - 你能组合 CSS 声明吗?

css - Bulma 无法在 Laravel 5.6 上工作

css - SCSS 无法编译,抛出错误

html - 如何使图像自动调整大小以适应与高度相关的浏览器窗口

javascript - 如何有选择地将鼠标事件传递给底层 svg 元素

html - div最大高度

css - 我如何使用过滤器 : for ie8 that won't affect ie9?