(function flexible(window, document) { var docel = document.documentelement; var dpr = window.devicepixelratio || 1; // adjust body font size function setbodyfontsize() { if (document.body) { document.body.style.fontsize = (12 * dpr) + 'px'; } else { document.addeventlistener('domcontentloaded', setbodyfontsize); } } //setbodyfontsize(); // set 1rem = viewwidth / 10 function setremunit() { var rem = docel.clientwidth / 10; docel.style.fontsize = rem + 'px'; } setremunit(); // reset rem unit on page resize window.addeventlistener('resize', setremunit); window.addeventlistener('pageshow', function (e) { if (e.persisted) { setremunit(); } }); // detect 0.5px supports if (dpr >= 2) { var fakebody = document.createelement('body'); var testelement = document.createelement('div'); testelement.style.border = '.5px solid transparent'; fakebody.appendchild(testelement); docel.appendchild(fakebody); if (testelement.offsetheight === 1) { docel.classlist.add('hairlines'); } docel.removechild(fakebody); } }(window, document));