[英]LESS - Assign mixin to variable and reuse
鉴于此LESS mixin:
#gradient {
.vertical (@startColor: #555, @endColor: #333) {
background-color: @endColor;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor)); /* Konqueror */
background-image: -moz-linear-gradient(@startColor, @endColor); /* FF 3.6+ */
background-image: -ms-linear-gradient(@startColor, @endColor); /* IE10 */
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @startColor), color-stop(100%, @endColor)); /* Safari 4+, Chrome 2+ */
background-image: -webkit-linear-gradient(@startColor, @endColor); /* Safari 5.1+, Chrome 10+ */
background-image: -o-linear-gradient(@startColor, @endColor); /* Opera 11.10 */
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); /* IE6 & IE7 */
-ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor); /* IE8+ */
background-image: linear-gradient(@startColor, @endColor); /* the standard */
}
}
通常会按以下方式调用页眉/页脚的样式:
header {
#gradient > .vertical(@black, @white);
width: 100%;
}
footer {
#gradient > .vertical(@black, @white);
padding: 20px;
}
这没问题。 但是,我正在尝试分配#gradient > .vertical(@black, @white);
变量gradient1
并重新使用它。 理想情况下这样的事情:
@gradient1: #gradient > .vertical(@black, @white);
@headerBackground: @gradient1;
@footerBackground: @gradient1;
header { @headerBackground; width: 100%; }
footer { @footerBackground; padding: 20px; }
这不起作用 - 但如何解决这个问题呢?
您不能将mixin分配给变量,但可以创建一个新的mixin作为别名:
.gradient1() {
#gradient > .vertical(@black, @white);
}
.headerBackground() {
.gradient1();
}
.footerBackground() {
.gradient1();
}
header {
.headerBackground();
}
footer {
.footerBackground();
}
您无法将mixin结果分配给LESS中的变量。 您可以使用模式匹配从几乎相同数量的代码获得基本相同的结果:
.myGradient(gradient1) {
#gradient > .vertical(@black, @white);
}
@headerBackground: gradient1;
@footerBackground: gradient1;
header { .myGradient(@headerBackground); width: 100%; }
footer { .myGradient(@footerBackground); padding: 20px; }
从本质上讲, .myGradient(gradient1)
成为您的“变量”名称,无论您在何处放置它,都会生成相同的代码。 然后,您可以通过您设置的与模式匹配的变量来控制渐变,因此您可以设置其他渐变,如下所示:
.myGradient(gradient2) {
#gradient > .vertical(@red, @blue);
}
.myGradient(gradient3) {
#gradient > .vertical(@yellow, @orange);
}
然后将各种背景变量设置为gradient1
, gradient2
, gradient3
值,所有这些都使用与模式匹配的.myGradient
mixin。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.