返回介绍

循环(Loops)

发布于 2020-06-05 22:50:58 字数 1821 浏览 1260 评论 0 收藏 0

在编程中我们最常用的逻辑处理除了条件判断之外,其次就是循环了。在上一个小节中我们已经学习了条件判断,这个小节我们具体学习一下循环,在其他的编程语言中我们都是通过 for 循环的结构去实现的循环结构。但是在 Less 中并没有这么一种语法,而是通过自身调用从而实现的循环递归。同时我们需要运用之前我们学习到的条件判断从而跳出循环。

1. 语法定义

官方定义: Creating loops .

慕课解释: 创建循环。

2. 方法详情

在 Less 中,我们可以通过 mixins 结合 guard 函数自身调用从而达到类似于 for 循环的效果,创建各种循环迭代结构。

例如:

@list:a,b;

.for(@counter) when (@counter < length(@List)+1) {
  .background-@{counter} {
    background-image: url("./images/@{extract(@list,@counter)}.png")
  }
  .for(@counter+1)
}

.for(1)

上述的代码中,.for 通过 when() 函数控制 @counter 参数并调用自身,达到了类似于循环的效果,每一次循环都会返回一个结果。

输出代码如下:

.background-1 {
    background-image: url("./images/a.png")
}

.background-@{counter} {
    background-image: url("./images/b.png")
}

3. 使用场景

循环主要用于动态创建多个样式类或多个属性值。

4. 示例

我们来使用递归循环创建一个 CSS 网格类:

  • 输入代码:
.generate-columns(@n, @i: 1) when (@i =< @n) {
  .column-@{i} {
    width: (@i * 100% / @n);
  }
  .generate-columns(@n, (@i + 1));
}

.generate-columns(4);

.generate-columns 一共循环了 4 次,每一次循环都会创建一个 .column-@{i} 类及其对应的样式类。当然我们也可以通过这种方式生成多个属性值相同的样式类。

  • 输出代码
.column-1 {
  width: 25%;
}
.column-2 {
  width: 50%;
}
.column-3 {
  width: 75%;
}
.column-4 {
  width: 100%;
}

总结

本章节我们介绍了 Less 中的循环,循环(loops)其实是 minxin 和 guard 结合的一种语法。在循环之前我们可以创建一个列表保存需要循环的数据,合理的结合使用可以达到循环迭代的效果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文