簡體   English   中英

LESS - 將mixin分配給變量並重用

[英]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); 
}

然后將各種背景變量設置為gradient1gradient2gradient3值,所有這些都使用與模式匹配的.myGradient mixin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM