1.css的弊端
- CSS需要书写大量的看似没有逻辑的代码,冗余度高
- 不方便维护,不利于复用
- 没有很好的计算能力
2.Less介绍
简单说:Less是CSS预处理语言,扩展了CSS的动态性
CSS的扩展语言,也成为CSS的预处理器。在CSS基础上引入了变量、运算以及函数等功能,简化了CSS的编写。
常见CSS预处理器:Sass、Less、Stylus
3.Less使用
后缀名是less,在less文件中写less语句
学习:
- less变量
- less编译
- less嵌套
- less运算
3.1 less变量
变量值是可以改变的,在CSS中一些颜色和数值经常使用
语法:
@变量名:值;
变量命名规范:
- 必须加@前缀
- 不能包含特殊字符
- 不能以数字开头
- 大小写敏感,color和Color是两个变量名
3.2 less编译
需要把less文件编译生成css文件,这样html页面才可以使用
vscode的插件:easyless
写完less文件,ctrl+s保存后就会生成css文件
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./12.less基础.css">
</head>
<body>
<div>绿色的</div>
</body>
</html>
less:
@color:green;
@font14:14px;
body{
background-color: @color;
}
div{
font-size: @font14;
}
生成的css:
body {
background-color: green;
}
div {
font-size: 14px;
}
3.3 less嵌套
可以向下边这样直接嵌套:
less:
@color:green;
@font14:14px;
body{
background-color: @color;
}
div{
font-size: @font14;
a{
color: red;
}
}
编译成css:
body {
background-color: green;
}
div {
font-size: 14px;
}
div a {
color: red;
}
遇到交集、伪类、伪元素选择器
- 内层选择器的前面没有&符号,则它被解析为父选择器的后代
- 如果有&符号,就被解析为父元素自身或父元素的伪类
@color:green;
@font14:14px;
body{
background-color: @color;
}
div{
font-size: @font14;
a{
color: red;
//伪元素、伪类、交集选择器(div.banner这种)前加&
&:hover{
color: black;
}
&.side{
color: aqua;
}
}
}
.nav{
&::before{
content: '';
}
}
编译成css:
body {
background-color: green;
}
div {
font-size: 14px;
}
div a {
color: red;
}
div a:hover {
color: black;
}
div a.side {
color: aqua;
}
.nav::before {
content: '';
}
3.4 less运算
任何数字、颜色或变量都可以参与运算。less提供了+、-、*、/算数运算
注意:
- 运算符左右两侧敲空格分开
- 除法运算加括号
- 两个数参与运算,如果只有一个数有单位,则最后结果根据以这个数的单位为准
- 两个数参与运算,两个数都有单位,且不一样的话,最后结果以第一个数的单位为准
less:
@border: 5px + 5;
div {
width: 200px - 50;
height: 200px;
border: @border solid red;
background-color: #666 - #222;
}
img {
width: (82 / 50rem);
height: (82 / 50rem);
}
css:
div {
width: 150px;
height: 200px;
border: 10px solid red;
background-color: #444444;
}
img {
width: 1.64rem;
height: 1.64rem;
}