首页 > 代码库 > 简单的LESS Tutorial

简单的LESS Tutorial

简单的LESS Tutorial

1. 什么是LESS?

LESS是一种动态的CSS语言,更专业的称呼是CSS preprocessor。作为CSS的扩展语言,LESS可以让CSS文件逻辑上更清晰,从而更容易维护和更新。LESS是开源的,诞生于2009年,采用javascript开发, LESS深受另外一种动态CSS语言SASS/SCSS的影响(SCSS是SASS的升级版) 。相对于SASS/SCSS或者其他CSS preprocessor, LESS的典型特征有两个,

  • 支持实时编译,例如网页或者应用可以直接应用less文件,通过嵌入less.js,browser支持less实时编译成css文件,并完成rendering

  • 支持纯CSS

2. 如何应用LESS?

在实际的开发中,可以有两种应用LESS的方式,直接应用LESS和间接应用LESS。如果选择直接应用LESS文件,则需要在相应的页面嵌入less.js, 浏览器会实时的把LESS文件编译为CSS文件并进行渲染,即页面中需要包含下面的代码,

<link rel="stylesheet/less" type="text/css" href="http://www.mamicode.com/styles.less" />

<script  src="http://www.mamicode.com/less.js"  type="text/javascript"></script>

如果选择间接的方式,则需要预先把LESS编译成CSS文件。

很多编辑器都有LESS的插件提供,例如笔者最喜欢的前端开发利器brackets上有一个插件LESS Auto Compile,在保存less文件的时候,这个插件能自动编译生成对应的css文件,不过需要在less文件开始插入如下的代码,

//out:./test.css,compress:false,stricMath:true

在IDE开发工具Netbeans上也有类似的功能提供。

在Ubuntu系统上,你可以安装LESS, 安装命令如下:

sudo npm install -g less

注意:LESS是运行在node中的,因此ubuntu系统中需要预先安装node.js

Ubuntu系统中编译less文件的命令如下:

lessc styles.less > styles.css

3. LESS的四个典型应用案例

3.1 Netsting

LESS代码如下:

.small-1 {
   display: block;
   zoom: 1;
   .test {
       font-size: 0;
       height: 0;
   }
}

编译完成对应的CSS代码如下:

.small-1 {
 display: block;
 zoom: 1;
}
.small-1 .test {
 font-size: 0;
 height: 0;
}


3.2 Variable

LESS代码如下:

@images: "../img";
body {
   color: #444;
   background: url("@{images}/white-sand.png");
}

编译完成对应的CSS代码如下:

body {
 color: #444;
 background: url("../img/white-sand.png");
}

3.3 Pseudo Selector

LESS代码如下:

.small-1{
   display: block;
   zoom: 1;
   &:after,&:before {
       content: " ";
       display: block;
       font-size: 0;
   }
}

编译完成对应的CSS代码如下:

.small-1,
{
 display: block;
 zoom: 1;
}
.small-1:after,
.small-1:before,
{
 content: " ";
 display: block;
 font-size: 0;
}

注意less中的 & 指的是parent selector, 在本例中指.small-1


3.4 Dynamic CSS Selector

LESS代码如下:

.grid-gen(3);
.grid-gen(@n,@i:1) when (@i =<@n) {
   .small-block-grid-@{i} {
       width: (@i *100% /@n);

   }
   .grid-gen(@n,(@i + 1));
}

编译完成对应的CSS代码如下:

.small-block-grid-1 {
 width: 33.33333333%;
}
.small-block-grid-2 {
 width: 66.66666667%;
}
.small-block-grid-3 {
 width: 100%;
}

本文出自 “我为楚狂” 博客,请务必保留此出处http://xjfengck.blog.51cto.com/8231459/1405860