一、Less是什么
Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node 或浏览器端。类似js中的jquery。
Less 网站 http://lesscss.net,中文旧网站 http://old.lesscss.net/article/document.html
二、编译工具
1、Koala编译,下载地址:http://koala-app.com/index-zh.html
使用方法:新建style.less文件,将整个目录拖到软件中,然后右键点击less文件设置输出路径,文件名为**.css,html中引入的是这个**.css。
2、Node,js库
3、浏览器端使用
在vue环境引入less: npm install less less-loader --save-dev
三、Less知识点
1、Less中的注释
可以使用css中的注释 " /**/ " 。会被编译,在最后的css文件中看到
也可以使用"//"注释。 编译时会自动过滤掉,不被编译 ,在最后的css文件中不会看到
2、变量
less声明变量用@开头,@变量名:值。
@300px; .box{ @width; }
3、混合(Mixin)
(1)不带参数
.border{ border:1px solid #000; } .box{ .border; margin:30px; }
(2)带参数
.border(@border_width){ border:@border_width solid #000; } .box{ .border(2px); }
(3)参数带默认值
.border(@border_10px){ border:@border_width solid #000; } .box{ .border(); // 使用默认值10px } .area{ .border(20px); // 使用传入的值20px }
4、匹配模式
类似于js 中的if,满足条件后才能匹配。以三角形为例,匹配三角形箭头所指方向。
.triangle(right,@w:5px,@c:#ccc){ border-wdith:@w; border-color:transparent transparent transparent @c; border-style:dashed dashed dashed solid; // dashed 是为了兼容ie6 } .triangle(top,@w:5px,@c:#ccc){ border-wdith:@w; border-color:transparent transparent @c transparent; border-style:dashed dashed solid dashed; // dashed 是为了兼容ie6 } ---------------------------- .sanjiao{ 0; height:0; overflow:hidden; .triangle(top,10px) } 或 .triangle(@_,@w:5px,@c:#ccc){ // @_ 固定写法,后面的参数也必须写 0; height:0; overflow:hidden; } .sanjiao{ .triangle(top,10px) }
5、运算
@100px; .box{ (@width-20)*5; color:#ccc - 10; }
6、嵌套
&对伪类使用 例:hover或focus。对连接的使用,例:&-item。&代表他的上一层选择器。
ul li{} ul li a{} ul li a:hover{} 相当于 ul{ li{ a{ &:hover{ } } } }
7、@arguments变量
@arguments包含了所有传递进来的参数,如果你不想单独处理每一个参数的话可以这样写:
.border(@w:30px,@c:red,@type:solid){ border:@arguments; }
8、避免编译
对于一些不争取的css语法或者Less不认识的专有语法,需要在字符串前面加上“ ~ ”
.box{ ~"calc(100% - 35px)"; }
9、!important关键字
会为所有混合所带来的样式,添加上!important。
.border-radius(@radius:5px){ -webkit-border-radius:@radius; -moz-border-radius:@radius; border-radius:@radius; } .box{ .border-radius() !important; } === .box{ -webkit-border-radius:5px !important; -moz-border-radius:5px !important; border-radius:5px !important; }