先上效果图(最开始是宽高200px,红色,鼠标移上去,变为宽高400px,蓝色,0s延迟,持续4s):


less如果不用可变参数的话:

.animate(@name,@time,@mode,@delay) {
  transition: @name, @time, @mode, @delay;
}
div {
  width: 200px;
  height: 200px;
  background: red;
  .animate(all, 4s, linear, 0s);
}

在 () 写的东西有点多,四个参数,此时就可以使用 ... 来接收参数:

其中 … 表示可以接受0个或多个参数

.animate(...) {
  // 也可以使用arguments来接收参数
  transition: @arguments;
}

translation至少接收两个参数,所以,用 … 来实现:

// 此时至少接收两个参数
.animate(@name,@time,...) {
  transition: @arguments;
}
  • 注意:less中的arguments和js中的arguments一样,可以拿到传递进来的所有形参

    less中的 … 表示使用了js中的 … ,那么必须写在形参列表最后

所以,最终的less代码可以是:

.animate(@name,@time,...) {
  transition: @arguments;
}

div {
  width: 200px;
  height: 200px;
  background: red;
  // 此时至少接收两个参数
  .animate(all, 4s);
}

div:hover {
  width: 400px;
  height: 400px;
  background: blue;
}