1.适配方案
使用flex布局控制盒子位置,使用rem或vhvw控制盒子大小
2.rem
rem 是一个相对单位,1rem 就是 html 文字的大小
html {
font-size: 35px;
}
此时1rem就是35px
3.媒体查询
可以自动检测视口的宽度,根据不同的视口宽度, 设置不同的根字号 ,就完成了适配
@media (width:375px) {
html {
font-size: 40px;
}
}
@media (width:320px) {
html {
font-size: 30px;
}
}
媒体查询写起来超级麻烦,而且检测不够精确,因此我们使用 flexible.js 这个 js文件,通过js 实时检测屏幕窗口的变化实现检测视口宽度。
4.less文件
less 可以帮我们把px单位转换到rem单位。
Less是一个CSS预处理器, Less文件后缀是.less
扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。
1.运算能力
.box {
width: 100px + 100;
// 注意:单位的转换 计算的时候以第一个单位为准
height: (100 / 37.5rem);
// height: (100rem / 37.5);
// height: 100px - 50;
margin: (20px * 5) auto;
padding: (10px / 5);
border: 1px + 2 * 3 solid red;
}
注意点:
1. 计算以第一个单位为准, 尽量写到最后一个数字上。 比如
height: (100 / 37.5rem);
2. 除法比较特殊,必须添加小括号。
3. 计算别忘了先乘除后加减
2.嵌套写法
可以生成后代选择器
.father {
width: 500px;
height: 500px;
background-color: purple;
// 孩子
.son {
width: 200px;
height: 200px;
background-color: pink;
p {
color: red;
}
}
}
我们在写伪类和伪元素的时候,经常使用 & 来代替父元素
.nav {
width: 100px;
height: 100px;
background-color: pink;
&::before {
content: '1';
}
&:hover::before {
color: red;
}
}
3.变量
变量最大的优点是: 方便使用和修改。
@变量名: 值;
@fontSize: 16px;
@suibian: hotpink;
body {
background-color: @suibian;
}
p {
background-color: @suibian;
}
div {
color: @suibian;
}
nav {
border: 1px solid @suibian;
}
4.导入导出
借助vscode插件可以快速将less文件转化为css
可以通过以下语法导入其他less文件
@import url(base.less);
5.vh vw
vw就是视口的宽度,vw 是个相对单位。
不管在什么屏幕下, 我们把屏幕分为平均的 100等份。
>1vw = 1 / 100 屏幕的宽度
与%的区别
1. vw 永远是以视口的宽度为准。· 在 375设计稿下, 1vw 永远是 3.75px
2. 百分比以父盒子为准。 假如父盒子是 200px,则 1% 是 2px
使用less文件将px转化为vw 和 vh