种类
使用
其实,我们在vscode
下下载一个插件easy less
就可以直接写less代码了,我们需要引入他编译后的css代码,当然这里还有其他用法
注释
//
开头的注释,不会被编译到css文件中/**/
包裹的注释会被编译到css文件中@
来声明一个变量普通属性值
@变量
// Variables
@link-color: #428bca; // sea blue
@link-color-hover: darken(@link-color, 10%);
// Usage
a,
.link {
color: @link-color;
}
a:hover {
color: @link-color-hover;
}
.widget {
color: #fff;
background: @link-color;
}
选择器和属性名
@{ 变量 }
选择器
// Variables
@mySelector: banner;
// Usage
.@{mySelector} {
font-weight: bold;
line-height: 40px;
margin: 0 auto;
}
属性名
@property: color;
.widget {
@{property}: #0ee;
background-@{property}: #999;
}
url("@{url}")
// Variables
@images: "../img";
// Usage
body {
color: #444;
background: url("@{images}/white-sand.png");
}
// Variables
@themes: "../../src/themes";
// Usage
@import "@{themes}/tidal-wave.less";
@var: 0;
.class {
@var: 1;
.brass {
@var: 2;
three: @var;
@var: 3;
}
one: @var;
}
输出
.class {
one: 1;
}
.class .brass {
three: 3;
}
&所决定的而是 选择器和选择器之间有没有 空格,&所代表的就是父级选择器
.link {
& + & {
color: red;
}
& & {
color: green;
}
&& {
color: blue;
}
&, &ish {
color: cyan;
}
}
输出
.link + .link {
color: red;
}
.link .link {
color: green;
}
.link.link {
color: blue;
}
.link, .linkish {
color: cyan;
}
详情点击
.name
或者.name()
来进行调用把选择器当做混合
.a, #b {
color: red;
}
.mixin-class {
.a();
}
.mixin-id {
#b();
}
输出
.a, #b {
color: red;
}
.mixin-class {
color: red;
}
.mixin-id {
color: red;
}
/* 当然我们还可以通过 .a ,或者 .a() 来进行调用 */
1. 不带输出的混合
详情点击
什么是不带输出的混合呢?
我们定义的混合,不会被编译到最终的css
文件中
语法
使用.name(){ }
来定义混合就可以了
定义混合
.my-mixin {
color: black;
}
.my-other-mixin() {
background: white;
}
.class {
.my-mixin;
.my-other-mixin;
}
输出
.my-mixin {
color: black;
}
.class {
color: black;
background: white;
}
2. 带参数的混合
定义混合
.border-radius(@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
调用混合
#header {
.border-radius(4px);
}
.button {
.border-radius(6px);
}
3. 带参数并且有默认值的混合
定义
.border-radius(@radius: 5px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
调用
如果我们不传参的话,可以不加括号进行调用
#header {
.border-radius;
}
4. 带多个参数的混合
定义并调用
.mixin(@color) {
color-1: @color;
}
.mixin(@color; @padding:2) {
color-2: @color;
padding-2: @padding;
}
.mixin(@color; @padding; @margin: 2) {
color-3: @color;
padding-3: @padding;
margin: @margin @margin @margin @margin;
}
.some .selector div {
.mixin(#008000);
}
输出
.some .selector div {
color-1: #008000;
color-2: #008000;
padding-2: 2;
}
padding
中呢,下面要看命名参数5. 命名参数
.mixin(@color: black; @margin: 10px; @padding: 20px) {
color: @color;
margin: @margin;
padding: @padding;
}
.class1 {
.mixin(@margin: 20px; @color: #33acfe);
}
.class2 {
.mixin(#efca44; @padding: 40px);
}
输出
.class1 {
color: #33acfe;
margin: 20px;
padding: 20px;
}
.class2 {
color: #efca44;
margin: 10px;
padding: 40px;
}
详情点击
什么是匹配模式呢?
这就相当于一个钥匙开一把锁,我们有很多锁,想要开哪个锁,用哪个钥匙就可以了
定义混合
.mixin(dark; @color) {
color: darken(@color, 10%);
}
.mixin(light; @color) {
color: lighten(@color, 10%);
}
.mixin(@_; @color) {
display: block;
}
调用混合
@switch: light;
.class {
.mixin(@switch; #888);
}
令我们吃惊的是@_
,我们并没有调用它,为什么他的样式会在里面呢?
@_
表示的是无论我们调用谁,他都会跟过来
.box-shadow(@x: 0; @y: 0; @blur: 1px; @color: #000) {
-webkit-box-shadow: @arguments;
-moz-box-shadow: @arguments;
box-shadow: @arguments;
}
.big-block {
.box-shadow(2px; 5px);
}
输出
.big-block {
-webkit-box-shadow: 2px 5px 1px #000;
-moz-box-shadow: 2px 5px 1px #000;
box-shadow: 2px 5px 1px #000;
}
width:(10px + 10)
/* 或者写成下面的两种形式
width:(10 + 10)px
width:(10 + 10px)
*/
~ " "
,引号里的内容就不会被编译语法
&:extend(选择器)
,括号内调用混合 *all 把所有的相同名称的样式都继承下来定义继承
nav ul {
&:extend(.inline);
background: blue;
}
.inline {
color: red;
}
输出
nav ul {
background: blue;
}
/*在inline后面添加了nav ul*/
.inline,
nav ul {
color: red;
}
优缺点