css - 是否可以将分离的规则集拆分成 less(拆分为属性 + 值)?

标签 css less

我正在尝试制作一个接收分离规则集的 less mixin。有没有办法将分离的规则集提取或拆分为属性 + 值?

@ruleset : {opacity:.5};
.myMixin(.4s, @ruleset);

.myMixin(@duration, @ruleset){
    @ruleset(); <-- looking to split this so I can zero out the property
}

我知道我可以用更少的代码使用一些 JS,我什至以前使用过 Math.random()。也许我可以利用 split() 之类的东西?

最佳答案

您可以将您的规则集表示为数组:

@ruleset: opacity .5, color red;

所以这个@ruleset是二维数组:[[opacity, .5], [color, red]]

然后你可以遍历数组并用键值对做你想做的事。

@ruleset: opacity .5, color red;

.myMixin(
  @duration, 
  @array, 
  @iterator: 1
) when(@iterator <= length(@array)) {

  // Get key and value from array
  @name:  extract(extract(@array, @iterator), 1);
  @value: extract(extract(@array, @iterator), 2);

  // Here you have current @name, @value and @duration
  .property-@{iterator} {
    duration: @duration;
    name:     @name;
    value:    @value;
  }

  // Next iteration
  .myMixin(@duration, @array, @iterator + 1);
}
.myMixin(.4s, @ruleset);

此代码将生成以下 css:

.property-1 {
  duration: 0.4s;
  name: opacity;
  value: 0.5;
}
.property-2 {
  duration: 0.4s;
  name: color;
  value: red;
}

海事组织: 我建议你尽量避免复杂的逻辑。新团队成员很难理解这段代码是如何工作的。几周后你就会忘记这段代码是如何工作的。 样式必须尽可能简单明了。

关于css - 是否可以将分离的规则集拆分成 less(拆分为属性 + 值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555416/

相关文章:

javascript - 在响应式网页设计中移动 DOM 中的元素

html - 您如何定位提交按钮的禁用状态?

css - Atom 编辑器中的平滑插入符动画

css - LESS css - JS 解析器与编译

css - 基于父列的 Bootstrap 列数

javascript - 从 url (javascript) 读取 txt 文件

javascript - 如何触发css :hover event on PageLoad

html - 如何从图标后面创建 div 的过渡?

css - Sublime Text 中的对齐插件不适用于 style.less(less 文件)

css - 带有 webpack 的 React 本质样式表为 14mb