」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用變數在 LESS 中動態建立屬性名稱?

如何使用變數在 LESS 中動態建立屬性名稱?

發佈於2024-12-21
瀏覽:619

How can I use variables to dynamically create property names in LESS?

在LESS 中的屬性名稱中使用變數(動態屬性/屬性名稱插值)

LESS 目前不支援動態插入屬性,儘管有關該主題的一些討論堆疊溢位。

解決方法#1:將動態產生的屬性注入到屬性值中

This解決方法將動態建立的屬性注入到硬編碼的屬性值中:

.vendors(@property, @value, @pre: ect) {
  -inj:~"@{pre}; -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value}";
}

解決方法#2:將動態產生的屬性注入到以下類別的名稱中(LESS

此解決方法建構一個虛擬類或規則集,包括供應商並遞歸地建構下一個類別:

.vendors(@property, @value, @rest:"") {
  @inject:~"@{rest} -webkit-@{property}: @{value}; -moz-@{property}: @{value}; -ms-@{property}: @{value}; -o-@{property}: @{value}; @{property}: @{value};";
}

.test(@nextclass){
  .vendors(transform, "matrix(2,0,0,2,20,20)");
  .vendors(transform-origin,"10px 10px", @inject);
  (~"{@{inject}} .@{nextclass}"){/*next class properties*/};
}

解決方法#3:將動態生成的屬性注入到以下類別的名稱中(LESS 1.4.0)

此版本使用遞歸來克服LESS 1.4中的限制.0:

@nl: `"\n\t"`;

.multi(@props,@vals,@i,@inj) {
  @property: extract(@props, 1);
  @value: extract(@vals, 1);
  @inject:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
}

.multi(@props,@vals,@i,@inj:"") when (@i > 0) {
  @property: extract(@props, @i);
  @value: extract(@vals, @i);
  @injnext:~"@{inj}@{nl}-webkit-@{property}: @{value};@{nl}-moz-@{property}: @{value};@{nl}-ms-@{property}: @{value};@{nl}-o-@{property}: @{value};@{nl}@{property}: @{value};";
  .multi(@props,@vals,(@i - 1),@injnext);
}

在 LESS 版本 1.6 及更高版本中,屬性名稱插值是本機實作的,因此不需要解決方法。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3