通过浏览器的调试工具可以看到手机屏幕的尺寸有375,414,390等等【写为sw】
但设计稿件的宽度尺寸有540,640,750等等【写为dw】
无论是设计稿是什么宽度,我们想都铺满手机宽度。
那就需要一个对应关系。px在不同的手机上表现不同,所以使用rem。
问题:但是一个rem是多少px好呢?
目标:为了写着方便,设计稿的真实尺寸是多少。我们就可以写 (真实尺寸/100)rem 就可以了
为此先考虑最大——设计稿横向铺满
1 dw540 = 5.4rem = sw375
2 dw750 = 7.5rem = sw390
2 dw750 = 7.5rem = sw375
对于1中1rem = (375/5.4)px = 69.44px
对于2中1rem = (390/7.5)px = 52px
对于3中1rem = (375/7.5)px = 50px
那我们就有一个计算式 1rem = (sw / (dw/100) )px
sw用代码就是 document.documentElement.clientWith 或 window.innderWidth。
dw就是我们设计稿的宽度。一般公司里都是定好的固定尺寸。
验证 设计稿640,屏幕390。1rem = 390/(640/100) = 60.9375px
设计稿150px宽度的元素 css就写1.5rem,也就是91.40625px。
150/640 == 91.40625/390 元素宽度在设计稿中的占比 css设置的宽度占屏幕宽比例相同。
flexible.js是把宽度分10份,然后找cssrem转换px到rem。
那为什么不切刚好是设计宽度倍数那么多份,这样就不用使用cssrem类的换写插件了。
0.01倍的话,设计稿150px就写1.5rem。0.1倍设计稿150px=15rem,1倍设计稿150px=150rem