less要点:变量,混合,嵌套,函数&运算,扩展javascript
(1)less经过@来定义变量;如:@color:#333;
(2)不只能够用变量来管理属性值,也能够用在选择器名称,属性名,URL以及@import语句中;
例一:选择器变量
less:css
//定义一个选择器变量; @mySelector:banner; //应用 .@{mySelector}{ width:100px; height:100px; }
编译后的css:java
.banner{ width:100px; height:100px; }
例二:URL变量编程
@img:'../img'; //应用 .widget{ width:100px; height:100px; background:url('@{img}/widget.png') no-repeat; }
例三:属性变量less
@property:color; //应用 .widget{ width:100px; height:100px; @{property}:#eee; }
相似于函数。混合能够将一个定义好的class A轻松的引入到另外一个class B中,从而简单实现class B继承 class A中的全部属性。咱们还能够带参数地调用,就像使用函数同样。
例一:无参编程语言
//定义一个color类 .color{ color:#eee; background-color:#f00; } //应用 .widget{ width:100px; height:100px; .color; }
例二:有参函数
//定义一个color类 .color (@color:#eee){ color:@color; background-color:#f00; } //应用 .widget{ width:100px; height:100px; .color();//不传参时,即用默认的参数; .color(#0f0);//传入参数的状况 }
有些时候看到以下的用法:this
.color () { color:#eee; }
当你但愿.color()不出如今css里,且又能引入其它类时,就能够这样写。
例三:
在媒体查询里的嵌套写法稍有区别,以下所示;url
匹配模式的写法相似于混合。它的做用相似于if语句。spa
.mixin(dark,@color) { color: darken(@color, 15%); } .mixin(light,@color) { color: lighten(@color, 15%); } //下面代码的做用是,无论匹配上面哪一种模式,下面样式都会加进去。注意:第一个参数必定是@_,后面的每一个参数都要加上 .mixin(@_,@color) { width:100px; height:100px; } .line { .mixin(dark,#FF0000); }
编译后:
.line { color: #b30000; width: 100px; height: 100px; }
(1)在一个选择器中嵌套另外一个选择器来实现继承;(&表示当前选择器的父选择器)
(2)媒体查询和嵌套媒体查询
less:
#header{ background-color:#eee; overflow:hidden; .logo{ float:left; width:50px; height:30px; a{ display:block; } } }
编译后:
#header{ background-color:#eee; overflow:hidden; } #header .logo{ float:left; width:50px; height:30px; } #header .logo a{ display:block; }
任何数值,颜色和变量均可以进行运算;less能够进行加、减、乘、除的运算;less提供了内置的函数,如Color函数,Math函数;
@width:50px; #header{ width:@width + 50; }
有时候,出于组织的目的,或者为了提供一些封装,你会但愿将你的mixins 组合在一块儿。以便稍候复用或者分发。
命名空间至关于一个混合的集合;能够在须要的地方引用单独的样式。
#bundle{ .button{ display:block; } .tab{……} .citation{……} }
如今若是咱们想在#header a中混合.button类,那么能够这样写:
#header a{ #bundle > .button }
须要注意的是命名空间内声明的变量将只做用于该命名空间,你会用它来引用一个mixin (#Namespace > .mixin-name)。但你不能这么作: (#Namespace > @this-will-not-work)。
less 中的做用域与编程语言中的做用域概念很是类似。首先会在局部查找变量和混合,若是没找到,编译器就会在父做用域中查找,依次类推。
/*块注释*/ //行注释(不会输出到编译后的css文件中)
extend是一个less伪类,它会合并它所在的选择其和它所匹配的引用。
less:
nav ul{ &:extend(.inline); background:blue; } .inline{ color:red; }
编译后:
nav ul{ background:blue; } .inline,nav ul{ color:red; }
arguments变量包含了所有的传进来的参数。若是不想一个参数一个参数的写,那么能够用arguments参数。
less:
.border(@w:10px,@c:red,@xx:solid) { border:@arguments; } div{ .border(20px); }
编译后:
div{ border:20px red solid; }
有时候咱们须要输出一些不正确的css语法或less不认识的专有语法。要输出这样的值咱们能够在字符串前加上‘~’
例:
div{ width:~' calc(100% - 35)'; }
相似于css !important关键字。