900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 移动端开发rem实现屏幕适配及处理页面加载页面坍塌样式错乱网页闪烁问题

移动端开发rem实现屏幕适配及处理页面加载页面坍塌样式错乱网页闪烁问题

时间:2024-06-06 13:22:10

相关推荐

移动端开发rem实现屏幕适配及处理页面加载页面坍塌样式错乱网页闪烁问题

rem布局在加载的时候会出现元素一开始很小,闪烁一下恢复正常大小

问题的原因无非就是html一开始没有设置字体大小嘛,那我们就一开始按最常用的iPhone 6 尺寸,设置html的font-size: 50px;好了,设置html的font-size: 50px;就合理了吗?我的回答是,至少变化的范围非常小,以360px宽的设备为例,根字体大小应该是48px;以前相当于是从0px-48px,现在是50px-48px,不会造成很明显的闪烁问题。

至于为什么设置为50px;首先,设计稿是基于750px来设计的,我们重构稿实现的时候根元素大小应该是设置为50px(在规定1rem=100px的前提下);其次,720px和750px这两个设备尺寸,是安卓和IOS设备中占比比较大的设备尺寸。

所以:移动端适配可以采用js动态计算及结合在公用样式中设置默认字体大小(html{font-size:50px})

(function(doc,win){vardocEl=doc.documentElement,resizeEvt="orientationchange"inwindow?"orientationchange":"resize",recalc=function(){varclientWidth=docEl.clientWidth;if(!clientWidth)return;if(clientWidth>=750){docEl.style.fontSize="100px";}else{docEl.style.fontSize=100*(clientWidth/750)+"px";}varhtml=document.getElementsByTagName("html")[0];varsettedFs=(settingFs=parseInt(100*(clientWidth/750)));varwhileCount=0;while(true){varrealFs=parseInt(window.getComputedStyle(html).fontSize);vardelta=realFs-settedFs;//不相等if(Math.abs(delta)>=1){if(delta>0)settingFs--;elsesettingFs++;html.setAttribute("style","font-size:"+settingFs+"px!important");}elsebreak;if(whileCount++>100)break;}};if(!doc.addEventListener)return;win.addEventListener(resizeEvt,recalc,false);doc.addEventListener("DOMContentLoaded",recalc,false);})(document,window);

仓促时间仓促文章。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。