1.4.3 • Published 7 months ago

less-lib v1.4.3

Weekly downloads
17
License
MIT
Repository
-
Last release
7 months ago

Personal Less Library

自用Less库

Example

从2013年创建这个库,一点点的添加完善,目前功能已经基本稳定,现在它可以帮助我快速完成几乎所有的样式书写工作。对!就是快速!

为什么选择Less

Sass、Stylus、Less 如何选择?

这个问题是所有初学CSS预编译器的小伙伴最关心的问题。本人在工作中也使用过 Sass 和 Stylus,他们定义 Mixin 时非常便捷,语法类似于常见编程语言,并且有可以定义丰(鸡)富(肋)的函数供开发使用。而 Less 虽然也支持这些能力,但是写法却有些反人类,习惯了常规编程语言的人可能很难适应。

一句话总结:

  • Sass - 写库便捷,调用繁琐
  • Stylus - 写库...写不下去,调用懵逼
  • Less - 写库繁琐,调用快捷

由此我们不难看出,为什么 Bootstrap4.0 会由 Less 改为 Sass,因为 Sass 写库很方便,而使用者又不需要用 Sass 来调用它,只需要加载编译好的 CSS 即可,相比之下 Less 没有任何优势。

然而,我们的日常工作并不是去定义 Mixin,或者是去定义函数,我们的工作实际是需要书写大量页面样式代码,我们需要频繁的去调用之前定义的 Mixin 和函数。基于这个需求,个人而言, Less 无疑是我最佳的选择。

Sass、Stylus、Less 能力对照表

下表是我在使用中发现的一些差异,这里只对有差异的能力进行比较,相同的能力不做对比。

能力SassStylusLess
属性嵌套
占位符选择器
条件判断@if@elseifelsewhen()default() (写复杂的条件判断会非常繁琐)
迭代@for@each@whilefor in.loop()(需要手动实现)
字符串转换加入引号、移除引号只能移除引号?加入引号、移除引号
传参参数不能有,(但是CSS属性值有些是可以加,的啊)参数同样不能有,灵活传参,参数中有,时,可以使用;分隔参数。
定义函数使用Sass定义的函数使用Stylus定义函数不但可以使用Less定义函数,还可以使用js定义函数(你没看错,v2.5+实现了这个能力)
调用 Mixin繁琐的 @include无参数时必须加(),如果 Mixin 和 CSS 属性名称相同,编译器会分不清楚你要写 CSS 还是要调 Mixin,甚至有些场景会出现循环调用的情况。松散的语法就是一把双刃剑,真是成也萧何,败也萧何。怎么定义,就怎么调用,一切样式块都可以作为 Mixin 来调用,简直酸爽。
属性 merge有(写库必备)
插入js表达式无(想都不用想)有(理论上而言所有 Javascript 内置函数都可以在 Less 中调用)

最后

当然,Sass 和 Stylus 可能还有很多令人激动的能力,但是至少在我开发库的过程中并没有遇到必须要用的能力,相反基于 Less 的属性 merge 能力实现的一些功能在 Sass 和 Stylus 中是无法实现的。以上仅代表个人观点,如果有理解不到位的地方欢迎指正。

1.4.3

7 months ago

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.11

6 years ago

1.2.10

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago