官网文档(中文):
Less 安装
Less 快速入门
Less 函数手册
一、less引用/安装:
在浏览器中使用Less.js是最简单的入门方式,并且使用Less进行开发很方便。(但是在生产中,当性能和可靠性很重要时,我们建议使用Node.js或许多可用的第三方工具之一进行预编译)
1.1 引用less.js来使用less
- 1.首先,将自己建的styles.less样式表的rel属性设置为“ stylesheet/less”;
- 2.接下来,引用less.js,注意该引用要放至样式表之后
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js"></script>
1.2 在vue中使用less
第一步:安装 less 和less-loader
npm install less less-loader --save
第二步:修改webpack.base.config.js文件,配置loader加载依赖,让其支持外部的less,在原来的代码上添加
第三步:在vue文件中的style标签中添加lang="less"即可在标签中使用less,或者外部引入less
二、用法
-
1.变量(Variables)
使用@定义变量
@width: 10px;
@height: @width + 10px;
#header {
width: @width;
height: @height;
}
-
2.混合(Mixins)
Less 允许我们将常用的样式,打包封装到 class 或 id 选择器中,其它地方可以方便的引用
#circle{
background-color: #4CAF50;
border-radius: 100%;
}
#small-circle{
width: 50px;
height: 50px;
#circle
}
#big-circle{
width: 100px;
height: 100px;
#circle
}
如果只用于样式打包,而不出现在css代码中,那么请在它的后面加上(),且支持传入参数
#bg-item(@widthSize:300px,@heightSize:100px){
background: #fff;
color: #0b2e13;
display: inline-block;
width: @widthSize;
height: @heightSize;
}
.box1{
#bg-item(500px,200px);
}
.box2{
#bg-item;
}
-
3.嵌套(Nesting)
嵌套可用于以与页面的HTML结构相匹配的方式构造样式表,同时减少了冲突的机会
ul{
@textColor: #666;
background: @color-f;
li{
color: @textColor;
}
}
-
4.运算(Operations)
算术运算符 +、-、*、/ 可以对任何数字、颜色或变量进行运算
@div-width: 300px;
@div-height: 100px;
@color-c: #03A9F4;
#contentBox(@height:100px){
display: inline-block;
color: @color-f;
height: @height;
}
.content1{
width: @div-width;
background: @color-c;
#contentBox(@div-height*2);
}
.content2{
width: @div-width + 200;
background: @color-c + 20;
#contentBox();
}
calc() 特例
为了与 CSS 保持兼容,calc() 并不对数学表达式进行计算,但是在嵌套函数中会计算变量和数学公式的值。
@var: 50vh/2;
width: calc(50% + (@var - 20px)); // 结果是 calc(50% + (25vh - 20px))
-
5.转义(Escaping)
转义允许你使用任意字符串作为属性或变量值
@min768: ~"(min-width: 768px)";
.element {
@media @min768 {
width: 200px;
height: 200px;
background: #719df7;
}
}
编译为:
@media (min-width: 768px) {
.element {
font-size: 1.2rem;
}
}
注意,从 Less 3.5 开始,可以简写为:
@min768: (min-width: 768px);
.element {
@media @min768 {
width: 200px;
height: 200px;
background: #719df7;
}
}
-
6.函数(Functions)
Less中有许多函数,详见 Less 函数手册
例如,降低颜色透明度的函数fadeout()
.content1:hover{
background: fadeout(@color-c,50%);
}
-
7.命名空间和访问符
有时,出于组织结构或仅仅是为了提供一些封装的目的,我们希望对混合(mixins)进行分组
可以将一些混合(mixins)和变量置于 #bundle 之下,为了以后方便重用或分发
#bundle() {
.button() {
display: block;
border: 1px solid black;
background-color: grey;
&:hover() {
background-color: white;
}
}
.tab() { ... }
.citation() { ... }
}
#header a {
#bundle.button(); // 还可以书写为 #bundle > .button 形式
}
-
8.映射(Maps)
从 Less 3.5 版本开始,可以将混合和规则集作为一组值的映射使用
#colors() {
primary: blue;
secondary: green;
}
.button {
color: #colors[primary];
border: 1px solid #colors[secondary];
}
-
9.作用域(Scope)
Less 中的作用域与 CSS 中的作用域非常类似。首先在本地查找变量和混合(mixins),如果找不到,则从“父”级作用域继承
@var: red;
#page {
@var: white;
#header {
color: @var; // white
}
}
与 CSS 自定义属性一样,混合(mixin)和变量的定义不必在引用之前事先定义。因此,下面的 Less 代码示例和上面的代码示例是相同的:
@var: red;
#page {
#header {
color: @var; // white
}
@var: white;
}
-
10.注释(Comments)
块注释和行注释都可以使用
/* 一个块注释
* style comment! */
@var: red;
// 这一行被注释掉了!
@var: white;
-
11.导入(Importing)
Less文件可以导入一个 .less 文件,此文件中的所有变量就可以全部使用了。如果导入的文件是 .less 扩展名,则可以将扩展名省略掉
@import "library"; // library.less
@import "typo.css";
注意: 在less中使用calc计算要采用以下写法
height: calc(~'100% - 64px');