使用自适应js(rem为单位)的时候,每次进去都会有一秒左右的时间页面由大到小的自适应跳动,怎么办?

使用自适应js(rem为单位)的时候,每次进去都会有一秒左右的时间页面由大到小的自适应跳动,怎么办?,第1张

应该是设置rem的函数加载顺序问题,应该先加载这个函数和css再去加载dom,这样就没有自适应跳动的问题,如果在加载dom之后调用该函数的话(在body之后加载函数),这样进入页面,fontSize会先以默认值显示,当读取了设置函数后才进行自适应。

(font size of the root element)是指相对于根元素的字体大小的单位

目前,IE9+,Firefox、Chrome、Safari、Opera 的主流版本都支持了rem。即使浏览器不支持rem,就多写一个绝对单位的声明即可,浏览器会忽略用rem设定的字体大小。

(1)首先浏览器的默认字体大小是16px

(2)100%=16px => 6.25%=1px => 62.5%=10px,因为rem是相对于根元素,因此在css的html中全局声明font-size=62.5%,此时的1rem就等于10px,这样一来rem和px之间的换算就比较简单,使用起来更方便

(3)使用JS根据浏览器宽度(或浏览器可视区域宽度(clienWidth))动态设置html的大小

通过JS动态设置根元素的font-size,这样的好处是所有设备分辨率都能兼容适配,淘宝首页目前就是用的JS计算。如果不用JS也是可以做适配的,一般我们在做web app都会先统计自己网站有哪些主流的屏幕设备,然后去针对这些设备去做media query设置也可以实现适配,如:

(4)使用媒体查询设置根元素大小——rem和px在响应式中的应用对比,如:

(5)Rem自适应JS,现在也有封装好的JS供我们直接使用

(6)屏幕适配还有一种简单粗暴的做法,即设置viewport进行缩放

天猫web app的首页就采用过这种方式,以320宽度为基准,进行缩放,最大缩放为320*1.3 = 416,基本缩放到416都就可以兼容iphone6 plus的屏幕了,这个方法简单粗暴,又高效。

通过js动态获取屏幕的宽度(document.clientWidth)然后根据屏幕宽度动态计算出rem的实际值。

假设,640px的设备 1rem = 100px

公式: rem = document.clientWidth / 640 * 100px


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11312890.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存