为什么要有预处理CSS? css写起来比较费事,而且代码难以维护, 后来,就有了让CSS加入一些编程的元素,像其他程序语言一样可以做一些预定的处理,这就是 CSS预处理器( CSS Preprocessor )
内部先用Ajax请求less文件(遍历网页上的具有rel=stylesheet/less属性的文件),然后按照自己的语法解析,生成对应的CSS然后加在页面中。
注意事项:
- 先引入我们自己编写的less文件
- 再引入我们的less.js文件
- 但是我们在生产环境下,我们引入页面的是css,而非less文件,因为如果让css在浏览器端编译,那么会使浏览器端响应变慢,这种是不可取的,所以我们都是编写好less文件后,在本地编译成css文件,最后引入页面。
-
使用 @+变量名 的方式来定义一个变量
-
举例:
// 定义变量
@containerWidth: 1200px;
@border:1px solid #000;
// 使用变量
.con{
width: @containerWidth;
border:@border;
}
在Less 中也可以有注释,分为单行注释,和多行注释。
-
单行注释:// 单行注释 ,注 less 在编译过程中会忽略掉。
-
多行注释:
/*!
* 也可不用叹号,叹号的作用,不会再压缩的时候被去除。用于声明版权。
*/
嵌套的作用是后代嵌套,如果需要直接子代嵌套,那么我们需要使用&代表父元素 格式为 &>子元素{}& 在一个作用域中只能用一次,不能这样写 &>& ,因为&只有一次,&后面是没有&。
举例:
@containerWidth: 1200px;
// 正确的嵌套和&用法
.con{
width:@containerWidth;
ul{
width:200px;
p{
width:100px;
a{
color:#f40;
&:hover{
color:blue;
}
}
}
}
}
// 正确使用 &
.box{
// li 是 .box 的直接子代
& > li{
color:#fff;
}
// p 是 .box 是后面的兄弟元素
& + p{
color:red;
}
// div 是 .box 的后代 div
div{
color:blue;
}
}
// 错误的使用&
.box{
ul{
// 此处&代表的是ul,但是ul后面的ul不能这样表示,&一次只能表示一次。不知道这样表述对不对...
& + &{
width:100px;
}
}
}
像函数一样来传递参数,如果没有传参,则按照定义的默认的来。
示例:
// 定义一个类
.roundedCorners(@radius:5px;){
-webkit-border-radius:@radius;
-moz-border-radius:@radius;
border-radius:@radius;
}
// 应用一个类
#header{
.roundedCorners(10px);
}
#footer{
.roundedCorners;
}
less 支持多个其他的less文件的导入一个less文件。我们约定 以_为开头的文件,是可以被导入的。
示例:
// 在主less文件中 导入其他三个less文件, 举例如下:
@import url('_other1.less');
@import url('_other2.less');
@import url('_other3.less');
内置函数
- lighten : 将一个颜色变亮
示例:
lighten(#000 ,10%);
// rgb 三个值都是0 ,都增多10% (255的10%,四舍五入,26 ,转换成16进制:就变成了1a1a1a)。在bootstrap定制的时候,能够看到这种函数。
-
更多函数 : http://lesscss.cn/functions/
-
更多内容,移步至:
less 中文网 学习地址: http://lesscss.cn/ 更多阅读: http://www.1024i.com/demo/less/