手机端页面rem自适应脚本

v = parseInt(1 / initial_scale);

}

} else if(flexible) {

var o = flexible.getAttribute(“content”).match(/initial-dpr=(["']?)([\d.]+)\1?/);

if (o) {

v = parseFloat(o[2]);

initial_scale = parseFloat((1 / v).toFixed(2))

}

}

if (!v && !initial_scale) {

var n = (win.navigator.appVersion.match(/android/gi), win.navigator.appVersion.match(/iphone/gi));

v = win.devicePixelRatio;

v = n ? v >= 3 ? 3 : v >= 2 ? 2 : 1 : 1, initial_scale = 1 / v

}

//没有viewport标签的情况下

if (domEle.setAttribute(“data-dpr”, v), !viewport) {

if (viewport = dom.createElement(“meta”), viewport.setAttribute(“name”, “viewport”), viewport.setAttribute(“content”, “initial-scale=” + initial_scale + “, maximum-scale=” + initial_scale + “, minimum-scale=” + initial_scale + “, user-scalable=no”), domEle.firstElementChild) {

domEle.firstElementChild.appendChild(viewport)

} else {

var m = dom.createElement(“div”);

m.appendChild(viewport), dom.write(m.innerHTML)

}

}

win.dpr = v;

win.addEventListener(“resize”, function() {

clearTimeout(timeCode), timeCode = setTimeout(resize, 300)

}, false);

win.addEventListener(“pageshow”, function(b) {

b.persisted && (clearTimeout(timeCode), timeCode = setTimeout(resize, 300))

}, false);

resize();

}(window);

执行完代码后你的页面就会跟随手机的宽度而自适应了,根本就不用什么媒体查询那些,很简洁,很

使用,站在巨人的肩膀上吧这就叫做!

**二》不用手动设置meta标签,并且自动获取到dpr是多少,根据dpr设置字体大小。为了适应平板,可以设置宽度为10rem,超出部分设置背景色。具体模仿手淘。

**

!function(N,M){

function L(){

var a=I.getBoundingClientRect().width;

a/F>540&&(a=540*F);

var d=a/10;

I.style.fontSize=d+“px”,D.rem=N.rem=d

}

var K,J=N.document,

I=J.documentElement,

H=J.querySelector(‘meta[name=“viewport”]’),

G=J.querySelector(‘meta[name=“flexible”]’),

F=0,

E=0,

D=M.flexible||(M.flexible={});

if(H){

console.warn(“将根据已有的meta标签来设置缩放比例”);

var C=H.getAttribute(“content”).match(/initial-scale=([\d.]+)/);

C&&(E=parseFloat(C[1]),F=parseInt(1/E))

}else{

if(G){

var B=G.getAttribute(“content”);

if(B){

var A=B.match(/initial-dpr=([\d.]+)/),

z=B.match(/maximum-dpr=([\d.]+)/);

A&&(F=parseFloat(A[1]),

E=parseFloat((1/F).toFixed(2))),

z&&(F=parseFloat(z[1]),

E=parseFloat((1/F).toFixed(2)))

}

}

}

if(!F&&!E){

var y=N.navigator.userAgent,

x=(!!y.match(/android/gi),

!!y.match(/iphone/gi)),

w=x&&!!y.match(/OS 9_3/),

v=N.devicePixelRatio;

F=x&&!w?v>=3&&(!F||F>=3)?3:v>=2&&(!F||F>=2)?2:1:1,

E=1/F

}

if(I.setAttribute(“data-dpr”,F),!H){

if(H=J.createElement(“meta”),

H.setAttribute(“name”,“viewport”),

H.setAttribute(“content”,“initial-scale=”+E+“, maximum-scale=”+E+“, minimum-scale=”+E+“, user-scalable=no”),

I.firstElementChild){

I.firstElementChild.appendChild(H)

}else{

var u=J.createElement(“div”);u.appendChild(H),J.write(u.innerHTML)

}

}

N.addEventListener(“resize”,function(){

clearTimeout(K),

K=setTimeout(L,300)

},!1),

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值