简化 LESS Mixins 和参数

Posted

技术标签:

【中文标题】简化 LESS Mixins 和参数【英文标题】:Simplify LESS Mixins and Parameters 【发布时间】:2016-07-23 23:07:56 【问题描述】:

处理后的 CSS 应该是简洁的吧?

我正在尝试使用<span class="icon-login"> 构建一个按钮图标库

在这个类中,我根据类名为其分配一个 url。我的less code mixin是:

.icon-finder(@url)
   background-image: url("..images/icons/backend/@url-icon-36.png");
   background-position: center center;

@url 参数获取我的资产中的图标名称。然而,为了使用这个 mixin,我需要创建 LOADS 个实例。

.icon-analytics
   .icon-finder(analytics);

.icon-logout
   .icon-finder(logout); // Pointing to logout.png

etc etc

这似乎是在浪费时间。有什么办法可以简化这个过程吗?因为我希望每个班级都有一个紧凑的小“图标分配器”。 谢谢!

【问题讨论】:

对我来说似乎很简洁。或许看看Font Awesome 是怎么做到的? 您是否正在使用循环寻找类似this 的内容? 循环是一种解决方案,但您不会避免在较少的部分中至少声明“分析”、“注销”名称,因为在创建 CSS 时不会读取 html。另一种解决方案是使用 javascript,但它看起来有点矫枉过正。 谢谢大家。如果不对其进行硬编码,我似乎无法获得一个干净的选项。哈利可能是最简单的。我很感激! 【参考方案1】:

循环遍历数组会有所帮助。

减:

.icon-finder(@url)
   background-image: url("..images/icons/backend/@url-icon-36.png");
   background-position: center center;


@icons: analytics, logout;

.make-icons(@i: length(@icons)) when (@i > 0) 
  .make-icons(@i - 1);

  @icon: extract(@icons, @i); 
    .@icon 
        .icon-finder(@icon);
    


.make-icons(); // run the mixin

CSS:

.analytics 
  background-image: url("..images/icons/backend/analytics-icon-36.png");
  background-position: center center;

.logout 
  background-image: url("..images/icons/backend/logout-icon-36.png");
  background-position: center center;

谢谢to。

【讨论】:

以上是关于简化 LESS Mixins 和参数的主要内容,如果未能解决你的问题,请参考以下文章

less以及sass两者啥区别

Less

Bootstrap-Sass 源码解析三:Mixins

Bootstrap-Sass 源码解析三:Mixins

Bootstrap-Sass 源码解析三:Mixins

Autoprefixer vs LESS/Sass mixins? [关闭]