Less 可以通过 npm 在命令行上使用,也可以作为浏览器的脚本文件下载,或者在各种第三方工具中使用。
在服务器上安装更少软件的最简单方法是通过 node.js 包管理器 npm,即:
$ npm install -g less
注意:你需要安装 Node.js 才能使用 npm 工具。
安装完成后,您可以从命令行调用编译器,如下所示:
# 把编译好的CSS输出到控制台(终端) $ lessc styles.less
要将 CSS 结果保存到您选择的文件中,请使用:
# 将 styles.less 编译后的 CSS 输出到 styles.css 文件 $ lessc styles.less styles.css
如果要输出压缩的 CSS,可以使用 clean-css 插件。成功安装 clean-css 插件后,可以使用 --clean-css 选项压缩 CSS 并输出:
# 使用 lessc 将 styles.less 编译且压缩输出到 styles.min.css 文件 $ lessc --clean-css styles.less styles.min.css
【小知识】
怎样安装 clean-css?在控制台运行如下命令:
npm install -g clean-css-cli直接在命令行使用 clearn-css(不通过 lessc 命令),如下:
# 将 test.css 压缩后输出到 test.min.css 文件 cleancss -o test.min.css test.css当然,也可以在 lessc 命令中通过 --clean-css 选项使用 clean-css 插件。如下:
lessc --clean-css test.less test.min.css
实例:我们在桌面创建一个 test.less,代码如下:
// 字体颜色 @baseFontColor: #333333; // 背景颜色 @baseBgColor: #F0F0F0; // 设置 box 样式 .box { color: @baseFontColor; background: @baseBgColor; div { font-size: 16px; color: @baseFontColor; } }
编译方式:
(1)直接将编译后的 CSS 输出到控制台,如下:
D:\~my_workspace\web\less> lessc demo1.less .box { color: #333333; background: #F0F0F0; } .box div { font-size: 16px; color: #333333; }
(2)将编译后的 CSS 输出到 demo1.css 文件,如下:
C:\Users\huangxin\Desktop>lessc demo1.less demo1.css
其中,demo1.css 内容如下:
.box { color: #333333; background: #F0F0F0; } .box div { font-size: 16px; color: #333333; }
假如我们有一个 test.js 文件,内容如下:
var less = require('less'); less.render('.class { width: (1 + 1) }', function (e, output) { console.log(output.css); });
接下来开始通过 node.js 来执行该 JS:
(1)安装 less 依赖,执行 npm install less --save 命令。当命令执行完成后,会在当前目录下面生成 package.json 和 package-lock.json,以及 node_modules 目录,该目录存放的 less 依赖等。
(2)执行 node test.js 命令,调用 less 的编译器来编译 less,运行命令输出如下:
D:\~my_workspace\web\less\js> node test.js .class { width: 2; }
在浏览器中使用 less.js 有利于开发,但不建议用于生产环境。
客户端是最简单的入门方式,适合用更少的资源进行开发,但在生产中,当性能和可靠性很重要时,我们建议使用 node.js 或许多可用的第三方工具之一进行预编译。
(1)将 .less 样式表与 rel="stylesheet/less" 属性通过 <link> 添加到页面:
<link rel="stylesheet/less" type="text/css" href="test.less" />
(2)下载 less.js 库,并将其包含在页面的 <head> 元素中的 <script></script> 标签中:
<script src="less.js" type="text/javascript"></script>
注意:
确保在脚本之前包含样式表。
当链接多个 .less 样式表时,每个样式表都是独立编译的。因此,样式表中定义的任何变量、mixin 或名称空间在其他样式表中都不可访问。
由于浏览器加载外部资源的同源策略要求启用 CORS(跨域访问)。
示例:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Less</title> <!-- 引入 less 文件,注意 rel 属性,适合开发模式 --> <link rel="stylesheet/less" type="text/css" href="demo1.less" /> <!-- 引入 less js 库文件 --> <script src="https://cdn.bootcdn.net/ajax/libs/less.js/4.1.3/less.js"></script> </head> <body> <div> <p>Box1</p> <div>Div</div> <p>Box2</p> </div> </body> </html>
demo1.less 文件内容如下:
// 定义一个变量 // 字体颜色 @baseFontColor: #333333; // 背景颜色 @baseBgColor: #F0F0F0; // 设置 box 样式 .box { // 使用变量 color: @baseFontColor; background: @baseBgColor; div { font-size: 16px; color: @baseFontColor; background: red; } }
运行效果图:
less 选项需要在 <script src="less.js"></script> 之前定义全局对象,例如:
<!-- set options before less.js script --> <script> less = { env: "development", async: false, fileAsync: false, poll: 1000, functions: {}, dumpLineNumbers: "comments", relativeUrls: false, rootpath: ":/a.com/" }; </script> <script src="less.js"></script>
或者为了简洁起见,可以将它们设置为脚本和链接标记上的属(需要浏览器支持 JSON.parse 或 polyfill)。例如:
<script src="less.js" data-poll="1000" data-relative-urls="false"></script> <link data-dump-line-numbers="all" data-global-vars='{ myvar: "#ddffee", mystr: "\"quoted\"" }' rel="stylesheet/less" type="text/css" href="less/styles.less">
注意:
上面是通过命令行的方式进行 less 预编译,在开发工作中我们为了提高开发效率,可以使用 IDE 自动预编译 less 文件
less.js 请在服务器环境下使用!本地直接打开可能会报错!
监视模式是客户端的一个功能,这个功能允许你当你改变样式的时候,客户端将自动刷新。
要使用它,只需要在 URL 后面加上 #!watch,然后刷新页面就可以了。另外,你也可以通过在终端运行 less.watch() 来启动监视模式。
示例:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Less</title> <!-- 引入 less 文件,注意 rel 属性,适合开发模式 --> <link rel="stylesheet/less" type="text/css" href="demo3.less" /> <!-- 引入 less js 库文件 --> <script src="https://cdn.bootcdn.net/ajax/libs/less.js/4.1.3/less.js"></script> </head> <body> <div> <p>Box1</p> <div>Div</div> <p>Box2</p> </div> </body> </html>
less 文件内容如下:
// 字体颜色 @baseFontColor: #333333; // 背景颜色 @baseBgColor: #F0F0F0; // 设置 box 样式 .box { color: @baseFontColor; background: @baseBgColor; div { font-size: 16px; // font-weight: bold; color: @baseFontColor; background: red; } }
使用浏览器访问 http://127.0.0.1:5500/html/demo3.html#!watch 地址(使用 VSCode 的 Live Server 插件去运行,当我们修改页面时会自动重新加载页面),修改 less 文件且保存,你会发现页面样式会自动生效。如下图: