H5解决移动端rem加载瞬间页面错乱的方法(放大或者缩小)

页面在加载未完成前会出现瞬间错乱的现象,虽然时间不算长,但是肉眼可见,必须解决

我们知道页面加载顺序通常是”从上往下”加载的,所以在内容区域,也就是body以及body包含的DOM还未被浏览器遍历之前,我们就应该将html的font-size计算好。
所以我们应当把计算字体的js放在body之前

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0">
		<title>web_app</title>
	</head>
	<body>
		<div id="app">
			<router-view/>
		</div>
	</body>
</html>

<script>
	(function(win) {
        var tid;
        function refreshRem() {
            let designSize = 750; // 设计图尺寸
            let html = document.documentElement;
            let wW = html.clientWidth;// 窗口宽度
            let rem = wW * 100 / designSize;
            document.documentElement.style.fontSize = rem + 'px';
        }

        win.addEventListener('resize', function() {
            clearTimeout(tid);
            tid = setTimeout(refreshRem);
        }, false);
        win.addEventListener('pageshow', function(e) {
            if (e.persisted) {
                clearTimeout(tid);
                tid = setTimeout(refreshRem);
            }
        }, false);

        refreshRem();

    })(window);
</script>