利用CSS rem元素实现网站自适应

前言

什么是 rem

这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
除了 IE8 及更早版本外,所有浏览器均已支持 rem。
——来自百度

用途

利用 rem,我们就可以实现 js 自适应效果,可以很好的提升网页的多端效果,实现响应式布局

额外

  • 定义 rem 基准值(rem 与 px 之间的换算关系)
  • rem 的计算公式 :设备视口宽度 / 设计稿宽度 * 100

使用方法

加入以下 js 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = "orientationchange" in window ? "orientationchange" : "resize",
recalc = function () {
var clientWidth = docEl.clientWidth;

if (!clientWidth) return;

if (clientWidth >= 750) {
docEl.style.fontSize = "100px";
} else {
docEl.style.fontSize = 100 * (clientWidth / 750) + "px";
}
};

if (!doc.addEventListener) return;

win.addEventListener(resizeEvt, recalc, false);

doc.addEventListener("DOMContentLoaded", recalc, false);
})(document, window);

代码说明

1rem 就相当于一个根元素 font-size 的大小,加入以上代码在 css 直接用 1.5rem 即可

在 css 里规定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />

<title></title>
</head>

<style type="text/css">
html {
//在根元素中计算基准值字体大小,设备宽度 / 设计稿宽度 * 100

font-size: calc(100vw / 375 * 100);
}

body {
font-size: 16px;
}

//使用媒体查询监测设备视口宽度,当视口宽度大于最大移动设备宽度时,将内容的大小设置为固定值,不再随设备视口大小进行变化

@media only screen and (min-width: 769px) {
html {
//将根元素字体大小设置为需求最大宽度的基准值大小

font-size: calc(769px / 375 * 100);
}

body {
//将内容宽度固定设置为需求最大宽度

width: 769px;

margin: auto;
}
}

#box {
width: 1rem;

height: 1rem;

background-color: aqua;

font-size: 0.16rem;
}
</style>

<body>
<div id="box">测试rem</div>
</body>
</html>

引用

使用 rem 做自适应_乾卦三爻的博客-CSDN 博客_rem 自适应
Js 移动端自适应代码rem 布局高先生的猫的博客-CSDN 博客_js 自适应布局
TO DO

  • [ ] dome 示例
  • [x] 引入文档地址
  • [x] rem 介绍
  • [x] 使用 rem 的方法