/** * 传统HTML支持RPX工具 * * 使用方法: * 1、引入 * 2、在body之前执行 * * 注意事项: * 1、简写的不认(比如border:#f3f3f3 1px solid是不识别的) * 2、写的时候要用px,不要用rpx * 3、不支持不同源的link * 4、只能执行一次,否则会算错 * 5、不要试图往resize事件里放 * * @author 杨若瑜 */ (function () { var isReady = false; var readyList = []; var timer; whenDocumentReady = function (fn) { if (isReady) fn.call(document); else readyList.push(function () { return fn.call(this); }); return this; }; var onDOMReady = function () { for (var i = 0; i < readyList.length; i++) { readyList[i].apply(document); } readyList = null; }; var bindReady = function (evt) { if (isReady) return; isReady = true; onDOMReady.call(window); if (document.removeEventListener) { document.removeEventListener('DOMContentLoaded', bindReady, false); } else if (document.attachEvent) { document.detachEvent('onreadystatechange', bindReady); if (window == window.top) { clearInterval(timer); timer = null; } } }; if (document.addEventListener) { document.addEventListener('DOMContentLoaded', bindReady, false); } else if (document.attachEvent) { document.attachEvent('onreadystatechange', function () { if (/loaded|complete/.test(document.readyState)) bindReady(); }); if (window == window.top) { timer = setInterval(function () { try { isReady || document.documentElement.doScroll('left'); } catch (e) { return; } bindReady(); }, 5); } } })(); let rpx4html = () => { let globalWidth = document.documentElement.clientWidth; let perRpx = globalWidth / 750; for (let ssi in document.styleSheets) { let sheet = document.styleSheets[ssi]; if (sheet.cssRules) { for (let cri in sheet.cssRules) { let rule = sheet.cssRules[cri]; for (let si in rule.style) { let name = rule.style[si]; let value = rule.style[name]; if (value && value.indexOf('px') > -1 && value.search('^[0-9]+px$') > -1) { let num = new Number(value.match('[0-9]+')[0]); rule.style[name] = num * perRpx + 'px'; } } } } } }; whenDocumentReady(rpx4html);