sass - 在 if 语句中声明的变量导致 "undefined variable"

标签 sass

我希望在 if 语句中定义变量可以在 Sass 中工作,但不幸的是我收到错误消息,说变量未定义。这是我尝试过的:

@for !i from 1 through 9
    !foo = #000
    @if !i == 1
        !bg_color = #009832
    @if !i == 2
        !bg_color = #195889
    ...

    #bar#{!i} 
        color: #{!foo}
        background-color: #{!bg_color}

使用此代码,我会收到以下错误:

Undefined variable: "!bg_color".

最佳答案

Sass 变量仅对声明它们的缩进级别以及嵌套在其下的缩进级别可见。所以你只需要在你的 for 循环之外声明 !bg_color :

!bg_color = #FFF
@for !i from 1 through 9
    !foo = #000
    @if !i == 1
        !bg_color = #009832
    @if !i == 2
        !bg_color = #195889

    #bar#{!i} 
        color: #{!foo}
        background-color: #{!bg_color}

你会得到以下 css:
#bar1 {
  color: black;
  background-color: #009832; }

#bar2 {
  color: black;
  background-color: #195889; }

#bar3 {
  color: black;
  background-color: #195889; }

#bar4 {
  color: black;
  background-color: #195889; }

#bar5 {
  color: black;
  background-color: #195889; }

#bar6 {
  color: black;
  background-color: #195889; }

#bar7 {
  color: black;
  background-color: #195889; }

#bar8 {
  color: black;
  background-color: #195889; }

#bar9 {
  color: black;
  background-color: #195889; }

关于sass - 在 if 语句中声明的变量导致 "undefined variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510803/

相关文章:

html - 关于需要特定 HTML 结构的混合的想法?

css - 我们可以在已经使用 LESS 作为 css 预处理器的 Angular 1.6.6 中使用 SCSS css 预处理器吗?

css - 特定的 css 选择器被非特定的覆盖

html - @media print 不打印当前页面

html - 使用 CSS 将 '*' 添加到具有 'required' 属性的输入字段的标签

javascript - "Arguments to path.join must be strings"问题

css - cloud9 网络编辑器的 scss 构建器

css - 媒体查询之间有 1 个像素间隙

css - 在多个 SASS 文件中使用 Bootstrap 会导致类覆盖问题。什么是合适的 SASS/bootstrap 结构?

css - 在 Phpstorm 中为 SASS 文件启用 Emmet(Zen Coding)?