個別のプロパティに分割する必要があるプレフィックス値を処理しているため、試行しているものは機能しません。リンクされたコードの作成者として、これが私がそれを使用することをお勧めする方法です。次の関数が必要になります。
@function convert-gradient-angle(
$deg
) {
@if type-of($deg) == 'number' {
@return mod(abs($deg - 450), 360deg);
} @else {
$direction: compact();
@if nth($deg,1) == 'to' {
@if length($deg) < 2 {
$direction: top;
@warn "no direction given for 'to'. Using 'to bottom' as default.";
} @else { $direction: opposite-position(nth($deg,2)); }
@if length($deg) > 2 { $direction: append($direction, opposite-position(nth($deg,3)), space);}
} @else {
$direction: append($direction, to, space);
@each $pos in $deg { $direction: append($direction, opposite-position($pos), space); }
}
@return $direction;
}
}
@function convert-gradient(
$angle,
$details...
) {
@return linear-gradient(convert-gradient-angle($angle), $details...);
}
問題は、複数の背景などを使用する場合、さまざまなプロパティで関数を自分で繰り返す必要があることです。単純な背景画像のグラデーションが必要な場合は、これを使用して単純化できます。
@mixin gradient-background-image(
$gradient...
) {
@include background-image(convert-gradient($gradient...));
background-image: linear-gradient($gradient...);
}
それ以外の場合は、必要に応じて他のレイヤーを追加して、これらの2行を手動で書き込む必要があります。