(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var viewportWidth = window.innerWidth let baseWidth // 基准宽度 if (!viewportWidth) return switch (true) { case (viewportWidth >= 1200): baseWidth = 1920 break case (viewportWidth >= 648 && viewportWidth < 1200): baseWidth = 768 break case (viewportWidth < 648): baseWidth = 375 break } docEl.style.fontSize = 10 * (viewportWidth / baseWidth) + 'px' } // 防抖函数 var debounce = function (func, wait) { var timeout return function () { var context = this, args = arguments clearTimeout(timeout) timeout = setTimeout(function () { func.apply(context, args) }, wait) } } if (!doc.addEventListener) return // 给 recalc 函数加上防抖 var optimizedRecalc = debounce(recalc, 10) // 事件监听 win.addEventListener(resizeEvt, optimizedRecalc, false) doc.addEventListener('DOMContentLoaded', recalc, false) })(document, window)