Less 是一个Css 预编译器,意思指的是它可以扩展Css语言,添加功能如允许变量(variables),混合(mixins),函数(functions) 和许多其他的技术,让你的Css更具维护性,主题性,扩展性。
Less包含了一套自定义的语法及一个解析器,用户可以通过这些语法来编写less文件,然后调用解析器来生成相应的css文件。简单来说,less其实就是在现有css语法的基础上为它加入了程序式语言的特性。
Less 可运行在 Node 环境,浏览器环境和Rhino环境.同时也有3种可选工具供你编译文件和监视任何改变。
一、安装
1、命令行下使用
Less可以通过npm在命令行上使用,作为一个脚本文件浏览器或用于广泛的第三方工具下载。
因为我的电脑已经安装了node环境,所以可以直接通过npm包安装的方式来安装less。
|
|
完成安装之后,便可以通过lessc命令来编译less文件了。如下例:
|
|
编译该文件:
|
|
便可以得到test.css文件如下:
|
|
当然lessc后也可以跟很多的参数,如:
|
|
更多命令可以参考 —help或者参考官网
2、客户端使用
在浏览器中使用less.js开发是很好的,但不推荐用于生产环境中。
浏览器端使用是在使用LESS开发时最直观的一种方式。如果是在生产环境中,尤其是对性能要求比较高的场合,建议使用node或者其它第三方工具先编译成CSS再上线使用。
下面看如果直接在客户端来使用
|
|
这样当在浏览器中访问该页面时,less.min.js便会编译test.less并在页面head中插入相应编译后的css样式
有两点需要特别注意:
- 确保包涵.less样式表在less.js脚本之前
- 当你引入多个.less样式表时,它们都是独立编译的。所以,在每个文件中定义的变量、混合、命名空间都不会被其它的文件共享。
3、在引入了GruntJs的项目中使用
二、语法
1、变量
less允许开发者自定义变量,这样做有什么好处呢?如下例:
less:
|
|
css:
|
|
不难看到,通过这种方式,可以方便对变量进行统一的管理,可以抽取公共的属性在全局进行定义,一旦涉及到修改,只需修改变量即可。此外,也可以利用这种特性,来定义主题。
在编程中既然有变量,那么就必定涉及到一个概念作用域。下面来看下在less中变量的作用域是怎样的。
less:
|
|
css:
|
|
2、mixins
在less中,mixins指在一个class中混入另一个已经定义的class。
less:
|
|
css:
|
|
mixins其实就是一种规则的复用。除此之外,mixins还允许混入参数。
less:
|
|
css:
|
|
mixins还支持传入默认参数,如下:
less:
|
|
css:
|
|
在项目中为了防止选择器重名的问题,可以利用命名空间:
|
|
3、嵌套
嵌套规则很简单,如html本身的dom层次。
|
|
那么less可以这样编写:
|
|
4、运算和函数
以按钮的hover为例:
less:
|
|
css:
|
|
这样很简单的就实现了鼠标hover到按钮上背景色变暗的效果。
更多功能可以参考function api
4、注释
可采用//注释或者/注释/,但是在编译生成css若想保留注释必须采用css标准注释/../。
5、css3参考用例
- 圆角
|
|
- 四个角可自由定制角度
|
|
- 阴影
|
|
- 元素过渡效果
|
|
- 旋转
|
|
- 颜色渐变
|
|
|
|
- 镜像
|
|
- 颜色
|
|
|
|