8

file1.scss

@function toPx($n) {
    @return $n + 0px;
}

file2.scss

body {
   font-size:toPx(10);
}

file3.scss

@import "file1.scss";
@import "file2.scss";

file3.css の出力には次が含まれます

body {
       font-size:toPx(10);
    }

file2.scss に直接インポートしても、toPx 関数が機能しません。ただし、file2.scss 内で toPx を宣言すると動作します。

私はSASSを初めて使用するので、ここで単純なものが欠けていると仮定すると、誰かが私に何を教えてくれますか?

驚いたことに、私が使用している sass コンパイラである Scout はエラーをスローせず、単純に toPx(10) を出力 CSS にレンダリングします。

編集

グローバル関数を実現するには、Ruby API を使用する必要があることを示唆しているように思われるこのリファレンスを見つけました。誰でも明確にすることができますか?

http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#adding_custom_functions

4

1 に答える 1

1

ハックの答えに出くわしたので、おそらくスカウトのバグだと思います。

file3.scss をこれに変更しました

@import "file1.scss";
@import "file2.scss";
body {
       font-size:toPx(10);
    }

それをコンパイルした後、意図したとおりに機能しました。次に、ファイルを質問で説明した方法に戻したところ、toPx のすべての呼び出しが任意のファイルで機能するようになりました。

于 2013-03-14T01:32:46.043 に答える