平时在工作中,偶尔会遇到老大让你修改原来写好的样式,如果修改的多的话,修改起来是非常麻烦的.他不像js一样,定义变量、函数,需要修改某些值,直接修改方法就行了。less的出现,恰恰帮我们解决了这个问题
在这呢,我们简要说明一下less:
LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。
LESS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。
在学习前,我们需要做一下前期的工作:
安装sublime text3插件:
sublime text默认是不支持less语法的高亮显示的,需要安装less2css插件后才能高亮显示。
该插件的作用:
1.当保存文件的时候,会自动生成一个同名的css文件(注意点:如果保存less的父文件夹为less,那么就会在less同级的目录下生成一个css文件夹,并且把生成的同名css文件保存到该css文件夹中)
2.当保存less文件的时候提示编译错误信息
安装node.js
刚刚那只是前期的第一步,第二步是需要安装node.js,因为less需要node.js支持。下载安装到这里下载 https://nodejs.org/en/download/ 选择自己电脑的版本下载安装就可以了。下载安装好之后,只需要在环境中安装less 就好
安装方法: 打开命令语句window+r点击确定输入以下语句:
$ npm install -g less
开始使用less
完成了以上工作之后,我们终于开始要进入主题啦,下面能我就只是讲讲基本的使用,详细的使用大家还是去看官网的吧,毕竟写起来太长了,很耗费时间呢。
变量:less中定义变量是用@变量名:值;的方式的
@bgColor:#0094ff; @color:#fff; .demo{ background-color:@bgColor; color:@color; }
生成的css代码:
.demo { background-color: #0094ff; color: #ffffff; }
混合式写法:
混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。
/*less*/ @bgColor:#0094ff; @color:#fff; .demo{ background-color:@bgColor; color:@color; } .header{ border:1px solid #ededed; .demo; } /*输出的css*/ .demo { background-color: #0094ff; color: #ffffff; } .header { border: 1px solid #ededed; background-color: #0094ff; color: #ffffff; }
嵌套式写法:
我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。
/*less写法*/ @bgColor:#0094ff; @color:#fff; .demo{ background-color:@bgColor; color:@color; } header{ border:1px solid #ededed; .demo; h1 { font-size: 26px; font-weight: bold; } p { font-size: 12px; a { text-decoration: none; &:hover { border-width: 1px } } } } /*输出的css*/ .demo { background-color: #0094ff; color: #ffffff; } header { border: 1px solid #ededed; background-color: #0094ff; color: #ffffff; } header h1 { font-size: 26px; font-weight: bold; } header p { font-size: 12px; } header p a { text-decoration: none; } header p a:hover { border-width: 1px; }
函数 & 运算
运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。LESS中的函数一一映射了JavaScript代码,如果你愿意的话可以操作属性值。
/*less*/ @the-border: 1px; @base-color: #111; @red: #842210; #header { color: @base-color * 3; border-left: @the-border; border-right: @the-border * 2; } #footer { color: @base-color + #003300; border-color: desaturate(@red, 10%); } /*css部分*/ #header { color: #333333; border-left: 1px; border-right: 2px; } #footer { color: #114411; border-color: #7d2717; }