移动web 04
一、移动适配
- rem:目前多数企业在用解决方案
- vw / vh:未来的解决方案(重点)
1.vw/vh(则重)
1.1使用vw单位设置网页元素的尺寸
- 相对单位
- 相对视口的尺寸计算结果
- vw:viewport width
- 1vw = 1/100视口宽度
- vh:viewport height
- 1vh = 1/100视口高度
1.2vw适配原理
- vw单位尺寸
- 确定设计稿对应的vw尺寸 (1/100视口宽度)
- 查看设计稿宽度 → 确定参考设备宽度 (视口宽度) → 确定vw尺寸 (1/100 视口宽度)
- vw单位的尺寸 = px单位数值 / ( 1/100 视口宽度 )
代码:(加理解/ /)
<!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>vw和vh</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
/*
0 相对长度和绝对长度
1.绝对长度 姚明 2.50米 长度固定
px 绝对长度单位 固定!!
2.相对长度 小万 半个姚明高!! 相对大小是改变、必须参照物
em
%
vw/vh
1 vw/vh 是相对长度单位
vw vh => view width | view height
100vw 等于屏幕的宽度
100vh 等于屏幕的高度
*/
div{
width: 100vw;
height: 100vh;
background-color: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
- 注意:开发中,会不会vw和vh混用呢? 不会
- vh是1/100视口高度,全面屏视口高度尺寸大,如果混用可能会导致盒子变形。
计算公式:
**公式: 手机像素100vw 设计稿元素大小 / 设计稿大小
2.vw/vh计算样式
运用calc计算
代码演示:
<!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>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
div{
/*
屏幕的一半 减去 100px
*/
width: calc(50vw - 100px);
height: 50vw;
background-color: pink;
}
/*
默认的css 不可能直接计算的表达式
需要使用 cale
*/
</style>
</head>
<body>
<div></div>
</body>
</html>
2.1计算公式案例
计算公式:
**公式: 手机像素100vw 设计稿元素大小 / 设计稿大小
代码:
<!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>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
div{
/* 公式: 手机像素s100vw * 设计稿元素大小 / 设计稿大小 */
width: calc(100vw * 100 / 375);
/* width: calc(100vw / 375 * 100); */
height: calc(100vw / 375 * 100);
/* alt + z 快捷键 瞬间把px 变成 vw */
/* 快捷方法需要使用扩展功能 */
height: 26.667vw;
background-color: pink;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2.2运用快捷键直接将px变成vw
操作流程
1.打开Visual Studio Code
2.点击扩展(Ctrl + Shift + X)
3.搜索 px-to-vw (注意:使用作者为朝江的)
4.下载好了之后,后期使用,只需要alt+z即可将px单位直接转换成vw单位
5.注:使用前,确认好设计稿的宽度
可前往设置 搜索vw在px-to-vw:Viewport Width中更改宽度
**建议做项目的若需要转换不一一进行转换
先运用设计稿的长度单位完成之后再去一个一个模块替换vw
注意:
vw和rem 快捷键均为 alt+z 使用前,请牢记只能启动一个设置模式,否则会相互冲突,选其一,则另一个需要进行禁用。
3.rem
3.1使用rem单位设置网页元素的尺寸
- l网页效果
1、屏幕宽度不同,网页元素尺寸不同(等比缩放)
- px单位或百分比布局可以实现吗?
- px单位是绝对单位
- 百分比布局特点宽度自适应,高度固定
- 适配方案
- rem
- vw / vh
3.2.rem单位设置网页元素的尺寸
rem单位
相对单位
rem单位是相对于HTML标签的字号计算结果
1rem = 1HTML字号大小
rem单位尺寸
- 根据视口宽度,设置不同的HTML标签字号
- 书写代码,尺寸是rem单位
2.1 确定设计稿对应的设备的HTML标签字号
- 查看设计稿宽度 → 确定参考设备宽度(视口宽度) → 确定基准根字号(1/10视口宽度)
2.2 rem单位的尺寸
- N * 37.5 = 68 → N = 68 / 37.5
- rem单位的尺寸 = px单位数值 / 基准根字号
4.rem计算样式
4.1计算公式案例
运用calc计算
代码演示:
<!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>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
div{
/*公式:手机像素s100vw * 设计稿元素大小 / 设计稿大小*/
width: calc(10rem / 375 * 100);
height: calc(10rem / 375 * 100);
/* alt + z 快捷键 瞬间把px 变成 vw */
font-size: calc(10rem / 375 * 10);
background-color: pink;
}
</style>
</head>
<body>
<script src="./js/flexible.js"></script>
<div>rem移动适配</div>
</body>
</html>
使用flexible js配合rem实现在不同宽度的设备中,网页元素尺寸等比缩放效
4.2Flexible
- flexible.js是手淘开发出的一个用来适配移动端的js框架。
- 核心原理就是根据不同的视口宽度给网页中html根节点设置不同的font-size。
4.3运用快捷键直接将px变成rem
操作流程
1.打开Visual Studio Code
2.点击扩展(Ctrl + Shift + X)
3.搜索 px-to-rem (注意:使用作者为Marco N)
4.下载好了之后,后期使用,只需要alt+z即可将px单位直接转换成rem单位
5.注:使用前,确认好设计稿的宽度
可前往设置 搜索rem在设置中将设置复制为JSON文本后,点击后上角的标志,进入修改最后一行代码的数值即可
注意:
vw和rem 快捷键均为 alt+z 使用前,请牢记只能启动一个设置模式,否则会相互冲突,选其一,则另一个需要进行禁用。
二、思维导图总结
- vw 建议 简单方便 主流
- rem + flexible.js 麻烦 旧一点点