我如何在 LESS 中使用循环来创建特定的 class 排版名称?
How can I use a loop in LESS to create specific class names for typography?
我想生成 9 个排版 classes,每个排版如下:
font-size: 2rem;
line-height: 1rem;
我将对字体大小和行高使用标准印刷乘数。与其对所有这些 CSS class 进行硬编码,我想知道是否有更优雅的方式使用 LESS 在循环中生成它们。
我从另一个线程中找到了以下内容:
@iterations: 5;
.span-loop (@i) when (@i > 0) {
.span-@{i} {
width: ~"@{i}%";
}
.span-loop(@i - 1);
}
.span-loop (@iterations);
生成:
.span-5 {
width: 5%;
}
.span-4 {
width: 4%;
}
.span-3 {
width: 3%;
}
.span-2 {
width: 2%;
}
.span-1 {
width: 1%;
}
这非常接近,但我希望我的 class 名字更多 "named"。我如何使用循环生成 classes for:
.small { }
.caption { }
.body { }
.subheader { }
.title { }
.headline { }
等...
我也不依赖 LESS,所以如果有更好的 CSS 预处理器语言,那么我很乐意改用它:)
谢谢!
文档中的示例以供进一步修改;)
对于更复杂的代码,使用 scss 比使用 less
.for(@list, @code) {
& {
.loop(@i: 1) when (@i =< length(@list)) {
@value: extract(@list, @i);
@code();
.loop(@i + 1);
}
.loop();
}
}
@elements: small, caption, body, subheader, title, headline;
.for(@elements, {
@remfont: @i+1;
@remline: ((@i+1) * 1.5 / 3);
.@{value} {
font-size: ~"@{remfont}rem";
line-height: ~"@{remline}rem";
}
});
我想生成 9 个排版 classes,每个排版如下:
font-size: 2rem;
line-height: 1rem;
我将对字体大小和行高使用标准印刷乘数。与其对所有这些 CSS class 进行硬编码,我想知道是否有更优雅的方式使用 LESS 在循环中生成它们。
我从另一个线程中找到了以下内容:
@iterations: 5;
.span-loop (@i) when (@i > 0) {
.span-@{i} {
width: ~"@{i}%";
}
.span-loop(@i - 1);
}
.span-loop (@iterations);
生成:
.span-5 {
width: 5%;
}
.span-4 {
width: 4%;
}
.span-3 {
width: 3%;
}
.span-2 {
width: 2%;
}
.span-1 {
width: 1%;
}
这非常接近,但我希望我的 class 名字更多 "named"。我如何使用循环生成 classes for:
.small { }
.caption { }
.body { }
.subheader { }
.title { }
.headline { }
等...
我也不依赖 LESS,所以如果有更好的 CSS 预处理器语言,那么我很乐意改用它:)
谢谢!
文档中的示例以供进一步修改;) 对于更复杂的代码,使用 scss 比使用 less
.for(@list, @code) {
& {
.loop(@i: 1) when (@i =< length(@list)) {
@value: extract(@list, @i);
@code();
.loop(@i + 1);
}
.loop();
}
}
@elements: small, caption, body, subheader, title, headline;
.for(@elements, {
@remfont: @i+1;
@remline: ((@i+1) * 1.5 / 3);
.@{value} {
font-size: ~"@{remfont}rem";
line-height: ~"@{remline}rem";
}
});