css预编译其器,CSS预处理器之——Less

Less,顾名思义,少,在我看来,它有着与jQuery一样的思想——Write Less,Do More,尽管实际上这两者是完全不同的两个东西。

Less是一个CSS预处理器,先不管人们为何这样命名,在用原生CSS写样式的时候,有时候有没有一种很繁琐的感觉?繁琐在哪呢?

你可能不知不觉写了很多重复性的样式,可能其中只有一小部分不一致,比如说这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

或者说你可能需要很深层的嵌套设置样式,比如这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

假设说你可能还要处理兼容,比如这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

甚至说同样一个右内边距,但采用原生CSS,你不得不这样做:

AAffA0nNPuCLAAAAAElFTkSuQmCC

相信你会崩溃的,是的,那有什么办法解决这样的问题呢?

答案就是CSS预处理器,诸如Less、Sass,它使用类似CSS的语法为CSS赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。我们这里先说说Less。

Less的功能很强大,我们先来看第一个遇到的问题:重复性样式。

这其实在原生CSS也有解决办法,那就是将公共部分抽取出来,用一个个类名来存,但就像Bootstrap一样会出现一个标签上N多个类名,实在不利于维护,那怎么办呢?看看下面的混合模式:

混合(Mixin)与嵌套:

AAffA0nNPuCLAAAAAElFTkSuQmCC

看看这个编译后变成怎样的哈:

AAffA0nNPuCLAAAAAElFTkSuQmCC

混合模式可以说是Less一个非常容易上手但却是很好用的特性,你会发现,你在一个类名的样式对里放了另一个类名,这在Less是允许的,而且父子关系的标签样式可以嵌套,你不必定义一个parent类名,又得设置一个.parent .children类,配合着编辑器的代码收起功能,你可以非常方便的定位。这样第二个问题是不是也顺带解决了?

再看第三个问题——兼容处理。

参数:

我们可以把其中的border-radius用参数化的方式抽出,放入一个公共Less,配合着Css3的模块化@import,比如变成这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

然后呢,你会发现你写的样式变成这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

而且后续的还能继续复用,很方便对吧?border-radius还可传入参数,比如传入3,自动变成3px,这就是Less相较于原生CSS强大太多的地方,它让CSS有了像JavaScript一样的动态灵魂。

参数另一个很强大的作用在于修改起来很方便,比如说,定义成常量的参数,像下面这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

假如说你下面还有很多应用到红色或30的行高的,传统的方式你可能不得不一个个去改,是不是很累?而这里,你仅仅需要修改默认的@line-height的值就全部修改啦,是不是很好用?

这样参数还可以解决上面第四个问题,你可能不得不定义一堆从pr0、pr10...直到pr100,不累吗?而这里,你仅仅只需要:

AAffA0nNPuCLAAAAAElFTkSuQmCC

后续需要多少直接传多少的参数即可,甚至你还不怕当项目的资源目录(比如图片)结构发生变化,你不再需要去一个个的修改图片的url,而仅仅需要修改定义的@url参数,就可以达到批量修改的目的,是不是很强大??

函数

Less另一个强大的地方在于函数,它内置了类似于这样的函数写法,比如下面这一个,实际上就类似于JavaScript里的switch,非常神似对吧?也很强大对吧?让CSS看起来都不像CSS。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Less的函数还有很多,这里仅仅介绍了类switch写法。

计算

Less还有一个较强大的功能,那就是计算,其实由于最终都会转译成CSS,所以实际上还是常量,只不过是一种比较方便的写出相近的常量,比如颜色风格。

AAffA0nNPuCLAAAAAElFTkSuQmCC

看看编译后是什么样的哈:

AAffA0nNPuCLAAAAAElFTkSuQmCC

实际上因为最终转译的情况,它实际上是常量,是以基础数据为基础计算后返回过来的常量。

嗯,说了这么多,你可能会说,Less浏览器识别不了,我得转译,是的,这里的话推荐一个给大家,那就是logo为考拉的koala,它的界面是这样的:

AAffA0nNPuCLAAAAAElFTkSuQmCC

好了,Less的相关介绍暂时到这,后续想到再来补充。期待后续的Sass吧= =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值