em与rem之间的区别:
- 它们都是像素单位
- 它们都是相对单位
- em大小是基于父元素的字体大小
- rem大小是基于根元素(html)的字体的大小
实例:
<!DOCTYPE html>
<html lang="en" style="font-size: 50px">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
line-height: 1;
}
.container {
font-size: 25px;
}
.em {
font-size: 2em;
}
.rem {
font-size: 2rem;
}
</style>
</head>
<body>
<div class="container">
<div class="em">AAAAA</div>
<div class="rem">AAAAA</div>
</div>
</body>
</html>
rem适配方案:
- 核心原理:宽度和高度都能做到适配(等比缩放)
- 通过控制 html 元素上的字体大小去控制页面上所有以rem为单位的基准值,控制尺寸
- 核心换算公式:当前rem基准值 = 预设基准值 / 设计稿宽度 * 当前设备的宽度
- 技术:媒体查询
实例:
- 预设基准值: 100px
- 设计稿宽度:640px
- 假设的设备:640px, 414px, 320px
- 注意:由于媒体查询代码是从上往下执行的,所以代码书写顺序要从小到大(如果不的话,可以选择其他方案,例如:min-width 和 max-width 都设置)
<!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, user-scalable=no">
<title>rem适配</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
/* 假设的设备 320 414 640 */
@media (min- 320px) {
html {
font-size: 50px;
}
}
@media (min- 414px) {
html {
font-size: 64.6875px; /* 100/640*414 */
}
}
@media (min- 640px) {
html {
font-size: 100px;
}
}
/* rem适配 */
header {
width: 100%;
height: 1rem;
line-height: 1rem;
font-size: 0.32rem;
text-align: center;
background: green;
color: #fff;
}
</style>
</head>
<body>
<header>购物车</header>
</body>
</html>