less 不依赖ruby
最后更新于:2022-04-02 03:18:16
[TOC]
> [官网手册](http://lesscss.org/)
## 安装
Node
```
> npm install -g less`
> lessc styles.less styles.css
```
browser
```
```
## 注释
在`less`中
`/**/` 注释可再编译后保留在 css
`//` 编译后不保留在 css -推荐
## 导入
```
@import 'ku' //导入 ku.less 文件
@import (less)'a.css'; //直接把 a.css 合并到 目标文件, 且在合并在导入的位置:如import 写在60行,则把 css 从60行开始插入
```
## 变量
```
@font-width:22px;
p{
font-size: @font-width;
}
.content{
@font-width:23px;
.title{
font-width:@font-width;
}
}
```
## 混合 (Mixins)
### 不参数
```
p{
font-size: @font-with;
.red
}
.red{
color: red;
border:solid 1px slateblue;
}
//outpt css
p {
font-size: 22px;
color: red;
border: solid 1px slateblue;
}
.red {
color: red;
border: solid 1px slateblue;
}
```
### 传参
```
.border_02(@border_width){
border: solid @border_width seagreen;
}
.test_border{
.border_02(300px);
}
//output css
.test_border {
border: solid 300px #2e8b57;
}
```
### 默认参数
```
.border_02(@border_width:30px){
border: solid @border_width seagreen;
}
.test_border{
.border_02();
}
//output css
.test_border {
border: solid 30px #2e8b57;
}
```
## 匹配模式
```
.class_1(left){
border-left:solid 2px red;
}
.class_1(right){
border-right:solid 2px red;
}
.clss{
.class_1(right);
}
```
## 运算
```
@dwidth:200px;
.demo{
width: @dwidth+20*2; //240px
}
```
## 嵌套
1. 普通嵌套
```
.list{
width:60px;
height:60px;
li{
height:30px;
line-height: 30px;
span{
font-size:12px;
}
}
a{
float: right;
}
}
```
2. & 上层选择器
```
a {
padding:3px;
&:hover{ //上层选择器
color: red;
}
}
//output css
a:hover {
color: red;
}
```
## 内置函数
### Extends 继承
```
.base-btn {
height: 36px;
line-height: 36px;
min-width: 100px;
border-radius: 4px;
}
.default-btn {
&:extend(.base-btn);
color: black;
background-color: white;
}
.primary-btn {
&:extend(.base-btn);
color: white;
background-color: red;
}
```
## @arguments
```
.demo1(@p:1px,@c:red,@l:solid){ //必须要有默认值
border:@arguments; //等价于 @p @c @l
}
```
## 避免编译
```
.demo{
width:~'calc(300px-30px)'; //~'xxx' 中的内容原样输出
}
```
### 技巧
1. 生成三角形
```
.triangle(buttom,@w:5px,@c:#ccc){
border-width:@w;
border-color: @c transparent transparent;
border-style: solid dashed dashed ;
}
.triangle(left,@w:5px,@c:#ccc){
border-width:@w;
border-color: transparent @c transparent transparent;
border-style: dashed solid dashed ;
}
.triangle(top,@w:5px,@c:#ccc){
border-width:@w;
border-color: transparent transparent @c;
border-style: dashed dashed solid;
}
.triangle(right,@w:5px,@c:#ccc){
border-width:@w;
border-color: transparent transparent transparent @c;
border-style: dashed dashed solid;
}
.triangle(@_,@w:5px,@c:#ccc){
width:0;
height:0;
overflow: hidden;
}
.sanjiao{
.triangle(right,5px,red);
}
```
2. 类名简写
```
.tiem{
&_title{ //就是 item_title
}
}
```
';