less基础学习记录总结

目录

  • 变量
  • 混合
  • 带参数混合
  • 嵌套规则
  • 运算
  • Color函数
  • 命名空间
  • 作用域
  • Importing

变量

less中可以定义变量,用于后文使用。

//使用@符号开始
@redColor: red;
//这样使用
.header {
  color: @redColor
}
//会被编译成
.header {
  color: red;
}
//还可以这样使用
@str: redColor;  //定义一个字符串
@redColor: red;
.header {
  color: @@str
}
//编译成
.header {
  color: red;    //得到同样的效果
}

运算

@color1: #000;
@other: @color1 + #111;
div {
  color: @other;
}

混合

混合顾名思义,就是将多种样式进行组合在一起。比如:

.bg-red {
  background-color: red;
}
.color-white {
  color: white;
}
div {
  width: 100%;
  height: 200px;
  .bg-red;
  .color-white;
}
//最终回被编译成
.bg-red {
  background-color: red;
}
.color-white {
  color: white;
}
div {
  width: 100%;
  height: 200px;
  background-color: red;
  color: white;
}

当然也可以使用变量,也可以嵌套。上边这样写,编译后会多处两个样式.bg-red和.color-white暴露在了作用域中。如果觉得不太好,那么带参数混合可以很好解决这样的问题。

带参数混合

.bg-red() {
  background-color: red;
}
.color(@c) {
  color: @c;
}
.border(@px: 1px, @type: solid, @c: red) {  //可以使用默认参数
  border: @px @type @c;
}
.border2(@px: 1px, @type: solid, @c: red) {
  border: @arguments;    //可以使用arguments代替所有参数
}
div {
  .bg-red;
  .color(white);
  .border();
  .border2; //可以添加括号,可以不添加
}
//编译后,不会出现.bg-red,.border等
div {
  background-color: red;
  color: #ffffff;
  border: 1px solid #ff0000;
  border: 1px solid #ff0000;
}

使用参数的传递的时候,匹配几个就会编译几个,而且还可以通过名称传递,而不用管其顺序。

.mixins(@color: red; @width: 200px; @height: 300px) {
  width: @width;
  height: @height;
  color: @color;
}
div {
  .mixins(@height: 400px)
}
//编译成
div {
  width: 200px;
  height: 400px;
  color: red;
}

条件规则

@media: mobile;
@color: white;

.mixin (@c) when (@media = mobile) { color: @c; }
.mixin (@c) when (@media = desktop) { color: @c;border:1px; }
.class1 {
  .mixin(@color);
}
//编译成
.class1 {
  color: white;
}

嵌套规则

.header {
  height: 300px;
  .title {
    width: 200px;
  }
  &:hover {
    background-color: red;
  }
}
//编译成
.header {
  height: 300px;
}
.header .title {
  width: 200px;
}
.header:hover {
  background-color: red;
}

Color函数

//可以使用许多种函数操作color,如:
lighten(@color, 10%);     // 返回一个比@color还要淡10%的color
darken(@color, 10%);      // 返回一个比@color还要深10%的color

命名空间

将嵌套灵活运用,就变成了命名空间的用法。

#home {
  .title {
    height: 80px;
    line-height: 80px;
  }
  .content {
    color: gray;
  }
  .footer {
    height: 100px;
    background-color: black;
  }
}
.title {
    #home > .title;
}
//编译成
#home .title {
  height: 80px;
  line-height: 80px;
}
#home .content {
  color: gray;
}
#home .footer {
  height: 100px;
  background-color: black;
}
.title {
  height: 80px;
  line-height: 80px;
}

像上面这样,会把#home .title等暴露出来,如果不想暴露,则可以在#home后边加上括号,文章上边提到过。这样就可以不用暴露在编译后的内容代码中

#home() {
  .title {
    height: 80px;
    line-height: 80px;
  }
  .content {
    color: gray;
  }
  .footer {
    height: 100px;
    background-color: black;
  }
}
.title {
    #home > .title;
}
//编译成
.title {
  height: 80px;
  line-height: 80px;
}

作用域

从当前模块作用域的最内层开始查找变量

@var: red;

#page {
  @var: white;
  #header {
    color: @var;
  }
}
#footer {
  color: @var;
}
//编译成
#page #header { color: white; }
#footer { color: red; }

Importing

@import 'xxx/xxx/public.less'      //导入public.less
@import 'xxx/xxx/public.css'      //导入public.css
@import 'xxx/xxx/public'         //导入public.less

这是学习记录,如想深入研究,建议拜访Less教程网站或者lesscss.cn

你可能感兴趣的:(less基础学习记录总结)