SASS 中的动态类名

Posted

技术标签:

【中文标题】SASS 中的动态类名【英文标题】:Dynamic class names in SASS 【发布时间】:2018-07-13 14:22:58 【问题描述】:

我是 SASS 的新手。我想创建一个具有动态类名的元素,然后我可以在我的 SASS 中轻松控制它。类似于下面两个伪示例之一。我如何在 SASS 中执行此操作?谢谢!

示例 1:

--- React JS ---<div className=this.state.onClick ? "menu-on" : "menu-off"></div>

--- SASS ---

.menu-x 
  x = "on": 
    background-color: blue;
  
  x = "off": 
    background-color: red;
  

示例 2:

--- React JS ---

<div className="menu " + (this.state.onClick ? "on" : "off")></div>

--- SASS ---

.menu 
  .on 
    background-color: blue;
  
  .off 
    background-color: red;
  

【问题讨论】:

我想你可能需要styled-components而不是sass,如果你想完全控制你的JS代码中的css元素github.com/styled-components/styled-components 【参考方案1】:

您无法通过 React 控制 SASS,因为一旦您将其编译为 CSS,它就基本上是静态的。

但是,如果您将 SASS 更改为以下内容,我认为您的第二个示例将起作用:

.menu 
  &.on 
    background-color: blue;
  
  &.off 
    background-color: red;
  

这将编译为以下 CSS:

.menu.on 
    background-color: blue;

.menu.off 
    background-color: red;

【讨论】:

以上是关于SASS 中的动态类名的主要内容,如果未能解决你的问题,请参考以下文章

Storybook 5 Sass-loader 生成空模块类名

使用 LESS 或 SASS 为 CSS 类名添加前缀

如何使用 sass 正确避免在 HTML 上嵌入 twitter 引导类名称

如何在css或sass中为类名起别名

从 json 结果动态应用多个类名

ActionScript 3 使用变量中的类名动态加载库中的图像。