一、认识lesscss
二、使用lesshtml
三、变量( variables )node
四、混合 ( mixins ) css3
五、嵌套规则 ( nested-rules ) 编程
六、运算(operations)浏览器
七、函数(functions)app
八、命名空间less
九、做用域koa
十、引入(importing)编程语言
十一、关键字( important )
十二、条件表达式
1三、循环(loop)
1四、合并属性
1五、函数库(function)
初见less |
|
正确使用less |
|
变量 |
|
混合 |
|
嵌套规则
|
什么是嵌套规则 模仿html结构,让css代码更加简洁明了清晰。 header{ width: 960px; h1{ font-size: 18px; color: green; } .logo{ width: 300px; height: 150px; background: darkred; &:hover{ background: forestgreen; } } } & 说明:表示当前选择器的全部父选择器。 & 插入到选择器以后,就会将当前选择器插入到父选择器以前。 .a{ .b{ .c&{ color: 123; } } } 编译后 .c .a .b{ color: 123; } 组合生成全部可能的选择器列表 p, a, li { border-top: 2px dotted #366; & & { border-top: 0; } } 编译后 p p, p a, p li, a p, a a, a li, li p, li a, li li{ border-top: 0; } |
运算 |
运算说明(运算符与值之间必须以空格分开,涉及优先级时以“( )
”
优先)
任何数值、颜色和变量均可以进行运算;
less会自动推断数值的单位,全部没必要全部数值都加上单位。
.wp{
margin: 0 auto;
background: forestgreen;
width: 450px + 450;
height: 400 + 400px;
}
//涉及到优先级,使用()区分优先级
.wp{
margin: 0 auto;
width: (550 - 50)*2 + 24px;
height: 400 + 400px;
background:#ff0000 - 55; //#000021 c8c8c8
}
//rgb模式他的值是 0~255 ,当你的值超过255 ,那么就会以255进行相加操做
|
函数
|
Less提供了许多用于转换颜色,处理字符串和进行算术运算的函数。 .bgcolor{ background :rgb(0,133,0) ; z-index: blue(#050506); } 编译后 .bgcolor{ background :#008500; z-index: 6; } |
命名空间
|
什么是命名空间
在less中,咱们须要将一些混合组合在一块儿,能够经过嵌套多层id或者class实现。
#bgcolor(){
background: #ffffff;
.a{
color: #888888;
&:hover{
color: #ff6600;
}
.b{
background: #ff0000;
}
}
}
.bgcolor1{
background: #fdfee0;
#bgcolor>.a;
}
注意:">"能够省略不写
|
做用域
|
什么是做用域
less中的做用域与编程语言中的做用域概念很是类似,首先会在局部查找变量和混合。若是没找到,编译器就会在父做用域中查找,依次类推。
@clolor:#ffffff;
.bgcolor{
width: 50px;
a{
color: @clolor; //#ff0000
}
}
@clolor:#ff0000;
|
引入 |
什么是引入
你能够引入一个或多个.less文件,而后这个文件中的全部变量均可以在当前的less项目中使用!
@import "main.less";
@import (reference) "main.less"; //引用LESS文件,可是不输出
@import (inline) "main.less"; //引用LESS文件,可是不进行操做
@import (once) "main.less"; //引用LESS文件,可是不进行操做
@import (less) "index.css"; //不管是什么格式的文件,都把他做为LESS文件操做
@import (css) "main.less"; //不管是什么格式的文件,都把他做为CSS文件操做
@import (multiple) "main.less"; //multiple,容许引入屡次相同文件名的文件
@import (multiple) "main.less"; //multiple,容许引入屡次相同文件名的文件
@import (multiple) "main.less"; //multiple,容许引入屡次相同文件名的文件
.centen{
width:@wp;
.color;
}
注意:引用.css文件,会被原样输出到编译文件中!
|
关键字
|
什么是 !important关键字
在调用的混合集后面追加 !important 关键字,可使混合集里面的全部属性都继承!important。
.foo (@bg: #f5f5f5, @color: #900) {
background: @bg;
color: @color;
font-size: 16px;
font-weight: 900;
}
.unimportant {
.foo();
}
.important {
.foo() !important;
}
注意:会提高全部样式的权重,尽可能少用,不推荐使用。
|
条件表达式
|
>,>=,=,<=,<,true
.mixin (@a) when (lightness(@a) >= 50%) { //255/2=127.5
background-color: black;
}
.mixin (@a) when (lightness(@a) < 50%) {
background-color: white;
}
.mixin (@a) {
color: @a;
}
.class1 { .mixin(#7e7e7e) } //221 > 127.5 >50% background-color: black; 7e7e7e = 126
.class2 { .mixin(#808080) } //85 <127.5 <50% background-color: white; 808080 = 128
类型检查函数
能够基于值的类型来匹配函数
iscolor
isnumber
isstring
iskeyword
isurl
.mixin (@a) when (iscolor(@a)) {
background-color: black;
}
.mixin (@a) when (isnumber(@a) ) {
background-color: white;
shuzi:shuzi;
}
.mixin (@a) {
color: @a;
}
.class1 { .mixin(#7e7e7e) } //background-color: black;
.class2 { .mixin(123) } //background-color: white;
单位检查函数
能够基于值的类型来匹配函数
ispixel
ispercentage
isem
isunit
.mixin (@a) when (ispixel(@a)) {
background-color: black;
}
.mixin (@a) when (ispercentage(@a) ) {
background-color: white;
}
.mixin (@a) {
width: @a;
}
.class1 { .mixin(960px) } //background-color: black; width:960px
.class2 { .mixin(95%) } //background-color: white;width:95%
|
循环
|
在less中,混合能够调用它自身,这样,当一个混合递归调用本身,再结合Guard表达式和模式匹配这两个特性,就能够写出循环结构.
.loop(@counter) when (@counter > 0) {
.loop((@counter - 1)); // 递归调用自身 4 3 2 1 0
width: (10px * @counter); // 每次调用时产生的样式代码30px 20px 10px
}
div {
.loop(3); // 调用循环
}
.loop(@counter) when (@counter > 0) {
h@{counter}{
padding: (10px * @counter);
}// 每次调用时产生的样式代码
.loop((@counter - 1)); // 递归调用自身
}
div {
.loop(6); // 调用循环
}
|
合并属性
|
"+"逗号分隔所合并的属性值
在须要合并的属性的:的前面加上+就能够完成合并,合并以,分割属性
//+ 合并之后,以逗号分割属性值
.mixin() {
box-shadow+: inset 0 0 10px #555 ;
}
.myclass {
.mixin();
box-shadow+: 0 0 20px black;
}
//+_ 合并之后,以空格分割属性值
.a(){
background+:#f60;
background+_:url("/sss.jod") ;
background+:no-repeat;
background+_:center;
}
.myclass {
.a()
}
//background+_:#f60 url("/sss.jod");
注意:当前使用的是哪一个,就以这个想加。
|