📜  LESS 简介(1)

📅  最后修改于: 2023-12-03 15:32:38.279000             🧑  作者: Mango

LESS 简介

LESS是一种动态样式语言,是CSS预处理器的一种。它使用类似于CSS,但具有更强大的功能和更方便的语言。由于LESS提供了许多CSS不能提供的实用功能,如变量、嵌套、运算、函数、混合等,我们通常在项目中使用它来提高CSS的可重用性和可维护性。

LESS的变量

在CSS中,我们可能需要在多个地方使用同样的颜色、字体等属性,这时我们可以使用LESS的变量,方便且易于更改。例如,我们可以在LESS中定义一个变量:

@main-color: #007bff;

然后在其他地方使用:

h1 {
  color: @main-color;
}
LESS的嵌套

我们可以在LESS中使用嵌套的语法来减少代码冗余。例如,我们可以这样写:

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li {
    display: inline-block;

    a {
      text-decoration: none;
      color: @main-color;
    }
  }
}

这将编译为以下CSS代码:

nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

nav li {
  display: inline-block;
}

nav li a {
  text-decoration: none;
  color: #007bff;
}
LESS的混合

我们使用混合来消除代码冗余,可以将一组CSS属性封装为样式,并将其应用到多个元素上。例如,我们可以这样定义一个混合:

.border-radius(@radius) {
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  -ms-border-radius: @radius;
  -o-border-radius: @radius;
}

然后在其他地方使用:

.box {
  width: 100%;
  height: 200px;
  .border-radius(5px);
  background-color: #f5f5f5;
}

这将编译为以下CSS代码:

.box {
  width: 100%;
  height: 200px;
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -ms-border-radius: 5px;
  -o-border-radius: 5px;
  background-color: #f5f5f5;
}
LESS的运算

在LESS中,我们可以使用数学运算来计算CSS属性。例如:

@width: 100%;
@padding: 20px;
@inner-width: @width - @padding * 2;

.box {
  width: @width;
  padding: @padding;
  background-color: #f5f5f5;
}

.inner {
  width: @inner-width;
  height: 100px;
  background-color: #007bff;
}

这将编译为以下CSS代码:

.box {
  width: 100%;
  padding: 20px;
  background-color: #f5f5f5;
}

.inner {
  width: calc(100% - 40px);
  height: 100px;
  background-color: #007bff;
}
LESS的函数

LESS内置了一些实用的函数,例如用于颜色、字符串、数学值的函数。我们还可以定义自己的函数来扩展LESS的功能。

@main-color: #007bff;

.darken(@color) {
  @darken-amount: 10%;
  background-color: darken(@color, @darken-amount);
}

.lighten(@color) {
  @lighten-amount: 10%;
  background-color: lighten(@color, @lighten-amount);
}

.box {
  width: 100%;
  height: 200px;
  .darken(@main-color);

  &:hover {
    .lighten(@main-color);
  }
}

这将编译为以下CSS代码:

.box {
  width: 100%;
  height: 200px;
  background-color: #0062cc;
}

.box:hover {
  background-color: #1a8cff;
}
结论

通过使用LESS,我们可以更方便、更快速地编写CSS代码。它的变量、嵌套、混合、运算和函数等功能,大大提高了CSS的可重用性和可维护性,可以节省大量的时间和精力。