css - 更少的变量范围/上下文

标签 css less

我的 less 代码是这样的:

body {
  @var: white;

  &.blue { @var: blue; }
  &.red { @var: red; }
  &.abc { @var: #badass; }

  background-color: @var;
}

我希望的是,如果 body 有类 .abc 变量 @var 的值是 #badass ,如果你有类.blue,值为blue等等。但事实并非如此,变量的值不会独立于它们的遗留类而改变。

最佳答案

您需要为此创建一个参数混合:

.bg(@color){
  background-color:@color;
}

然后下面的代码就可以工作了:

body {
  .bg("white");

  &.blue{ .bg("blue");  }
  &.red { .bg("red");   }
  &.abc { .bg(#bada55); }

}

您正在做的是行不通的,因为您正在重新分配变量 - 这完美地工作,但没有将新值写入类。 (如果 LESS 创建新规则,每次你只是重新分配一个变量,那将完全没有意义。)此外,与任何其他编程语言一样,LESS 具有范围,因此在它到达 background-color 时:@var ; @var 具有分配给它的值 white 并相应地创建规则。以下将起作用(但当然没有意义):

body {
  @var: white;

  &.blue{ @var: blue;    background-color: @var;}
  &.red { @var: red;     background-color: @var;}
  &.abc { @var: #bada55; background-color: @var;}
  background-color: @var;
}

关于css - 更少的变量范围/上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846237/

相关文章:

css - 文件观察器 JetBrains IDE 中的自动前缀器

css - 如何在LESS中生成一次随机数并多次使用

javascript - 简单代码既不能在 jsfiddle 也不能在 codepen 上运行,而是在我的浏览器 (Chrome) 上运行?

php - 如何让 HTML/CSS 在电子邮件中显示?

html - 如何在纯 css 中设置大列的高度等于小列的高度?

Javascript Accordian 导航栏/下拉菜单打开和关闭

Drupal 站点中的 PHP 文本大小选择器仅在登录时有效

css - 少CSS : variables definition

gruntjs - 如何使用 grunt 将几个较少的文件连接(而不是编译)为一个

css - 将多行 css 保存在 less 变量中