视口发生改变根标签文字大小也要跟着改变
<!DOCTYPE html>
<html lang="zh-CN">
<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>
div {
width: 2rem;
height: 5rem;
background-color: bisque;
}
</style>
</head>
<body>
<div></div>
<script>
function fn() {
//获取当前设备的宽度
let cwidth = document.documentElement.offsetWidth;
//定义变量保存分数
let num = 20;
//计算根标签文字大小
let font_size = cwidth / num;
//给html标签设置文字大小
document.documentElement.style.fontSize = font_size + "px";
}
fn();
//给window注册resize事件(resize事件只要设备屏幕大小发生变化,就会触发这个事件)
window.onresize = function () {
fn();
};
</script>
</body>
</html>
封装一个rem适配的js文件,在需要的html中直接导入使用即可
//适配以及其他功能的JS
//关键设置html字体大小
//获取屏幕的大小
//把代码写到自调用函数中,避免变量污染
(function () {
let setFont = function () {
let html = document.documentElement//获取html大小
//获取也的宽度
let width = html.clientWidth//offsetWidth包含边框(区别)
// 适配一个范围1024-1920
if (width < 1024) width = 1024
if (width > 1920) width = 1920
// 计算字体大小
let fontSize = width / 80 + 'px'
html.style.fontSize = fontSize
//给html设置跟标签文字大小
}
//当屏幕打开的时候先调用一次
setFont()
//当设备的尺寸发生改变的时候,动态设置根标签的大小
window.addEventListener('resize', function () {
setFont()
})
})()