1.Less中的运算
- 1.1 算术运算符
+、-、*、/可以对任何数字、颜色或变量进行运算。如果可能的话,算术运算符在加、减或比较之前会进行单位换算。计算的结果以最左侧操作数的单位类型为准。如果单位换算无效或失去意义,则忽略单位。无效的单位换算例如:px 到 cm 或 rad 到 % 的转换。 例:
// 所有操作数被转换成相同的单位
@conversion-1: 5cm + 10mm; // 结果是 6cm
@conversion-2: 2 - 3cm - 5mm; // 结果是 -1.5cm
//conversion is impossible @incompatible-units: 2 + 5px - 3cm; // 结果是 4px
// example with variables @base: 5%;
@filler: @base * 2; // 结果是 10%
@other: @base + @filler; // 结果是 15%
- 1.2 乘法和除法不作转换。因为这两种运算在大多数情况下都没有意义,一个长度乘以一个长度就得到一个区域,而 CSS 是不支持指定区域的。Less 将按数字的原样进行操作,并将为计算结果指定明确的单位类型。
@base: 2cm * 3mm; // 结果是 6cm
你还可以对颜色进行算术运算:
@color: (#224488 / 2); // 结果是 #112244
background-color: #112244 + #111; // 结果是 #223355
2.Less中的混合
- 2.1 什么是less中的混合(Mix in) 将需要重复使用的代码封装到一个类中,在需要的地方直接调用即可 在预处理的时候会将封装好的类直接拷贝过来
- 2.2 注意点:
2.2.1 如果混合名称后面没有(),那么在预处理的时候,保留混合的代码到css文件中
2.2.2 如果混合名称后面有(),那么在预处理的时候,不会保留混合的代码css文件中
<html>
<head>
<title>LESS Mixins</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link rel="stylesheet" href="./css/06.less中的混合.css">
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
.center() {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.father {
.center();
width: 300px;
height: 300px;
background-color: red;
.son {
.center();
width: 200px;
height: 200px;
background-color: blue;
}
}
3.less中的混合参数
/*
这里是带参数的混合
.which(@w,@h,@c) {
width: @w;
height: @h;
background: @c;
}*/
/*
这里是带参数混合加上指定默认值
*/
//指定默认值:在形参后面加上:值
.which(@w:100px,@h:100px,@c:green) {
width: @w;
height: @h;
background: @c;
}
.box1 {
// 给指定的形参传递值
.which(@c:yellow);
}
.box2
{
.which(300px,200px,tomato);
}
4.less中的可变混合参数
- 1.less中的arguments和js中的arguments一样可以接收传递进来的多个参数 如果在形参列表中使用了...,那么必须写在形参最后面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>08.less可变混合参数</title>
<link rel="stylesheet" href="css/08.less可变混合参数.css">
</head>
<body>
<div></div>
</body>
</html>
.animate(@name,@time,@mode,@delay,...) {
transition: @arguments;
}
div {
width: 200px;
height: 300px;
background-color: red;
//transition: all 4s linear 0s;
//.animate(width, 4s, linear, 0s);
.animate(width, 4s, linear, 0s);
}
div:hover {
width: 400px;
height: 400px;
background-color: red;
}
/*
使用参数传递
.animate(@name,@time,@mode,@delay) {
transition: @name @time @mode @delay;
}*/
/*
使用arguments传递参数
.animate(@name,@time,@mode,@delay) {
transition: @arguments;
}*/
/*
传递多个参数
.animate(...) {
transition: @arguments;
}*/
/*
指定必须传递参数
.animate(@name,@time,...) {
transition: @arguments;
}
*/
5.less中混合的匹配模式
- 混合的匹配模式 就是通过混合的第一个字符串传参,来确定要执行哪一个同名的混合 例如HTML代码:
制作三角形为例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>09.less中的混合匹配模式</title>
<link rel="stylesheet" href="css/09.less中的混合匹配模式.css">
<!--<style>
* {
margin: 0;
padding: 0;
}
div {
width: 0;
height: 0;
border-width: 80px;
border-style: solid solid solid solid;
border-color: tomato transparent transparent transparent;
}-->
</style>
</head>
<body>
<div></div>
<script>
</script>
</body>
</html>
例如css代码:
普通的匹配模式
/*
.triangle() {
width: 0;
height: 0;
border-width: 40px;
border-style: solid solid solid solid;
border-color: red transparent transparent transparent;
}
*/
/*.triangle(@width,@color) {
width: 0;
height: 0;
border-width: @width;
border-style: solid solid solid solid;
border-color: @color transparent transparent transparent;
}*/
/*
.triangle(Down,@width,@color) {
width: 0;
height: 0;
border-width: @width;
border-style: solid solid solid solid;
border-color: @color transparent transparent transparent;
}
.triangle(Bottom,@width,@color) {
width: 0;
height: 0;
border-width: @width;
border-style: solid solid solid solid;
border-color: transparent transparent @color transparent;
}
.triangle(Right,@width,@color) {
width: 0;
height: 0;
border-width: @width;
border-style: solid solid solid solid;
border-color: transparent @color transparent transparent;
}
.triangle(Left,@width,@color) {
width: 0;
height: 0;
border-width: @width;
border-style: solid solid solid solid;
border-color: transparent transparent transparent @color;
}
*/
/*
@_通用的匹配模式
*/
.triangle(@_,@width,@color){
width: 0;
height: 0;
border-style: solid;
}
.triangle(Bottom, @width, @color) {
border-width: @width;
border-color: @color transparent transparent transparent;
}
.triangle(Left, @width, @color) {
border-width: @width;
border-color: transparent @color transparent transparent;
}
.triangle(Top, @width, @color) {
border-width: @width;
border-color: transparent transparent @color transparent;
}
.triangle(Right, @width, @color) {
border-width: @width;
border-color: transparent transparent transparent @color;
}