LESSはパターンマッチングを使用するため、おそらく2つのミックスインが必要になることは間違いありません(1つは1つのストップを取り、もう1つは2つのストップを取ります)。次のコードはこれを示しています(おそらくさらに減らすことができますが、これにより何が起こっているのかがかなり明白になります)。「名前」は同じですが(私の場合はsetTopGradient
)、変数の数が異なることに注意してください。
訂正:あなたの質問は、webkit
停止に小数を使用することを示しましたが、このページによれば、それは必要ではありません。そこで、次のコードをパーセンテージだけに更新しました。
以下
.setTopGradient(@startClr, @endClr, @st1Clr, @st1Pos) {
background: -moz-linear-gradient(
top,
@startClr,
@st1Clr @st1Pos,
@endClr
);
background: -webkit-linear-gradient(
linear,
left top,
left bottom,
from(@startClr),
to(@endClr),
color-stop(@st1Pos, @st1Clr)
);
}
.setTopGradient(@startClr, @endClr, @st1Clr, @st1Pos, @st2Clr, @st2Pos) {
background: -moz-linear-gradient(
top,
@startClr,
@st1Clr @st1Pos,
@st2Clr @st2Pos,
@endClr
);
background: -webkit-linear-gradient(
linear,
left top,
left bottom,
from(@startClr),
to(@endClr),
color-stop(@st1Pos, @st1Clr),
color-stop(@st2Pos, @st2Clr)
);
}
.someClass1 {
.setTopGradient(white, #d8d8d8, #e5e5e5, 88%);
}
.someClass2 {
.setTopGradient(#8b8b8b, #bfbfbf, #a9a9a9, 10%, #bdbdbd, 30%);
}
CSS出力
.someClass1 {
background: -moz-linear-gradient(top, #ffffff, #e5e5e5 88%, #d8d8d8);
background: -webkit-linear-gradient(linear, left top, left bottom, from(#ffffff), to(#d8d8d8), color-stop(88%, #e5e5e5));
}
.someClass2 {
background: -moz-linear-gradient(top, #8b8b8b, #a9a9a9 10%, #bdbdbd 30%, #bfbfbf);
background: -webkit-linear-gradient(linear, left top, left bottom, from(#8b8b8b), to(#bfbfbf), color-stop(10%, #a9a9a9), color-stop(30%, #bdbdbd));
}