私は最近、SASS がコンパイルされたときに実行されるいくつかのデフォルト アクションが必要であると判断し、それを実行するための関数を作成するのに役立つこのスタック オーバーフローの質問を見つけました ( scss ファイルの config.rb で定義された変数を使用します) 。
色の値は正常に取得され、SASS カラー オブジェクトのように処理されます (つまり、'#ff0000' を関数に渡すと、'red' として出力されます)。 shade() 関数。
私が得るエラーは
(137行目:「#ff1122」は「shade」の色ではありません)
しかし、tint() と shade() のすべてのインスタンスをコメントアウトすると、完全に機能します。
使用されているすべてのコードは次のとおりです。
config.rb (前述のスタック オーバーフロー リンクから取得)
sass_options = {:custom => { :custom_colors => {"main" => "#ff1122"} } }
module Sass::Script::Functions
def custom_color(value)
rgb = options[:custom][:custom_colors][value.to_s].scan(/^#?(..?)(..?)(..?)$/).first.map {|a| a.ljust(2, a).to_i(16)}
Sass::Script::Color.new(rgb)
end
end
style.scss (5 行目)
$col_primary : #{custom_color(main)};
style.scss (エラーで言及されていた 137 行目)
@include background-with-css2-fallback(linear-gradient(-45deg, transparent 51%, shade($col_primary, 10) 50%, $col_primary 75%, $col_primary 0%));
他の色として機能するため、これが機能しない理由がわかりません。
必要に応じてさらに情報を提供できます