我正在學習如何使用LESS。我對C++有很好的理解。我想爲漸變創建一些Mixins。我開始爲它編寫mixins,以便我可以輸入.gradient(「起始端即頂端」,第一種顏色,第二種顏色)或.gradient(「起始端即頂端」,第一種顏色,第一種停止,第二種顏色,第二站),但對於有2,3或4站的梯度。在我開始用四種顏色寫下一個之前,我想問一下,不同的變量類型是否可以重載LESS mixins。例如:減少使用不同變量類型重載mixins
.gradient (top, @top_color, @top_stop, @bottom_color, @bottom_stop){
background: @top_color;
background: -moz-linear-gradient(top, @top_color @top_stop, @bottom_color @bottom_stop);
background: -webkit-gradient(linear, left top, left bottom, color-stop(@top_stop,@top_color), color-stop(@bottom_stop,@bottom_color));
background: -webkit-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: -o-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: -ms-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: linear-gradient(to bottom, @top_color @top_stop,@bottom_color @bottom_stop);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@top_color', endColorstr='@bottom_color',GradientType=0);
}
.gradient(@_,@top_color,@top_stop,@bottom_color,@bottom_stop){}
上面的mixin需要5個參數,但下面的參數也是如此。
.gradient (top, @top_color, @middle_top_color, @middle_bottom_color, @bottom_color){
background: @top_color;
background: -moz-linear-gradient(top, @top_color 0%, @middle_top_color 25%, @middle_bottom_color 75%, @bottom_color 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,@top_color), color-stop(25%,@middle_top_color), color-stop(75%,@middle_bottom_color), color-stop(100%,@bottom_color));
background: -webkit-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: -o-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: -ms-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: linear-gradient(to bottom, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@top_color', endColorstr='@bottom_color',GradientType=0);
}
(頂混入的參數是顏色,百分比,顏色%,而底部的mixin的參數是顏色,顏色,顏色,顏色)
將LESS已瞭解這兩個因爲變量之間的差異不同? 或者我應該找到一個不同的路線來做到這一點?
編輯:
這是一個很好的解決方案,或是否有更好的辦法?
.gradient (top, true, @top_color, @top_stop, @bottom_color, @bottom_stop){
background: @top_color;
background: -moz-linear-gradient(top, @top_color @top_stop, @bottom_color @bottom_stop);
background: -webkit-gradient(linear, left top, left bottom, color-stop(@top_stop,@top_color), color-stop(@bottom_stop,@bottom_color));
background: -webkit-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: -o-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: -ms-linear-gradient(top, @top_color @top_stop,@bottom_color @bottom_stop);
background: linear-gradient(to bottom, @top_color @top_stop,@bottom_color @bottom_stop);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@top_color', endColorstr='@bottom_color',GradientType=0);
}
.gradient(@_,true,@top_color,@top_stop,@bottom_color,@bottom_stop){}
.gradient (top, false, @top_color, @middle_top_color, @middle_bottom_color, @bottom_color){
background: @top_color;
background: -moz-linear-gradient(top, @top_color 0%, @middle_top_color 25%, @middle_bottom_color 75%, @bottom_color 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,@top_color), color-stop(25%,@middle_top_color), color-stop(75%,@middle_bottom_color), color-stop(100%,@bottom_color));
background: -webkit-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: -o-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: -ms-linear-gradient(top, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
background: linear-gradient(to bottom, @top_color 0%,@middle_top_color 25%,@middle_bottom_color 75%,@bottom_color 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@top_color', endColorstr='@bottom_color',GradientType=0);
}
.gradient(@_,false,@top_color,@middle_top_color,@middle_bottom_color,@bottom_color){}
第二個參數如果有停止則爲真,如果不是則返回false?
您是否嘗試過運行您的代碼以查看LESS是否忽略了您的更改? –
是的,當我做.gradient(頂部,藍色,25%,紅色,75%),正常工作,但當我做.gradient(頂部,藍色,紅色,綠色,藍色),無法正常工作。有沒有一種方法可以根據變量類型進行操作? – kingcobra1986