70.JS---利用原生js做手机端网页自适应解决方案rem布局

mac2022-06-30  71

               利用原生js做手机端网页自适应解决方案rem布局

刚开始我用的是下面这段代码,然后js通过外部链接引入,最后每次用手机刷新网页的时候都会出现缩略图

function getRem(pwidth, prem) { var html = document.getElementsByTagName("html")[0]; var oWidth = document.body.clientWidth || document.documentElement.clientWidth; html.style.fontSize = oWidth / pwidth * prem + "px";}$(document).ready(function () { getRem(750, 100);});

然后我试着写在html页面,也会出现短暂的缩略图,作为一个处女座的我来说,是绝对不允许的。所以我在网上找了很多代码,发现他们有的只能在电脑上F12测试,并不能用手机上面的浏览器进行测试,还有其他一些也不能兼容。最后我找到了网易的rem自适应代码。(function(doc, win) { var docEl = doc.documentElement, isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1, dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放 dpr = 1, scale = 1 / dpr, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; docEl.dataset.dpr = dpr; var metaEl = doc.createElement('meta'); metaEl.name = 'viewport'; metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale; docEl.firstElementChild.appendChild(metaEl); var recalc = function() { var width = docEl.clientWidth; if (width / dpr > 750) { width = 750 * dpr; } // 乘以100,px : rem = 100 : 1 docEl.style.fontSize = 100 * (width / 750) + 'px'; }; recalc() if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false);})(document, window);经过测试,在电脑上和手机上的测试,都兼容所有分辨率的手机,并且还能随着屏幕宽度进行实时变化。这样就不用考虑 $(window).resize(function () {})唯一的不便就是不能通过外部链接的形式引入js,只能写在每个页面的head里面,用内联的方式写进html页面。当然在实际项目里面,可以直接写在公共文件public.html里面上面的比例是750:100,按照设计图上面,所有大小都要除以100. 例:

未引入前:

body { width: 750px; height: 640px; }

引入后:除以100并将px换成rem

body { width: 7.5rem; height: 6.4rem; }

转载于:https://www.cnblogs.com/sqyambition/p/10805218.html

最新回复(0)