当函数被注释掉时,SCSS不会编译 - CompileSass

时间:2015-11-11 13:46:25

标签: css visual-studio sass

不幸的是,我不得不回过头来重新编写一些样式以确保它适用于IE8(客户需要它)。我有一个将z-index添加到元素的函数,

.mobile-pane {
    ....
    ....

    /* won't work for IE8 */
    /* @for $i from 1 through 4 {
        &:nth-child(#{$i}) {
            z-index: #{$i};
        }
    } */

    &:first-child {
        z-index: 1;

        & + .mobile-pane {
            z-index: 2;

            & + .mobile-pane {
                z-index: 3;

                & + .mobile-pane {
                    z-index: 4;
                }
            }
        }
    }
}

如您所见,该功能已明确注释掉。但是(我在Visual Studio中使用CompileSASS),在输出窗口中,我看到了:

CompileSass 8:35:55 AM:Sass compilation failed for main. 
Error: C:/projectFolder/source/sass/components/header:219: unbound variable $i

在Google WebDev中,我看到了函数的输出,....:nth-child(2) { z-index:2; } ......等等,而不是

.mobile-pane:first-child+.mobile-pane {
    z-index: 2;
}

,正如我所料。我是SCSS的新手,所以我不知道这是一个已知问题,还是CompileSass没有正确阅读评论。

据我所知,我可以将函数保留在其中,并且只有IE8 z-index CSS,它仍然可以工作,但是我想保留这个函数,以防IE8不再是一个要求

我的问题 - SCSS执行此操作是正常的,还是扩展名?

1 个答案:

答案 0 :(得分:1)

预计在CSS注释中访问变量,而不是在注释中声明变量。

$i: 100;

/* commenting about #{$i} */

输出:

/* commenting about 100 */

同时

/*
$j: 100;

commenting about #{$j} */

引发错误:

  

未定义的变量:“$ j”。

如果要注释掉访问由于被注释掉而不存在的变量的代码块,请改为使用双斜杠:

$j: 100;

.foo {
// content: $j;
}