这个网站www.w3cplus.com/mobile/lib-…说的其实已经很详细了,再此基础上做进一步的分析
以IP6为例
独立像素其实就是视窗,与设备密度无关,设备像素就是物理像素,与dpr有关,Phone6的设备宽度和高度为375pt * 667pt,而其dpr为2,设备像素(物理像素)为750pt * 1334pt。
通过引入flexible.js,会在html根目录加上font-size和dpr
如果一张UI图是750px,则1rem=75px,基准为75来计算rem
当图中一个UI块大小为100px * 100px,通过postcss或者px2rem转换成rem时:
100/75 = 1.33333333rem
所以通过计算100px * 100px => 1.33333333rem * 1.33333333rem
在浏览器中,通过不同的dpr得到的UI块大小其实不一样
1、dpr=1时,font-size=37.5px 所以1.33333333rem*35.7=49.9999999px
所以在dpr=1的设备中显示出的UI块的最终大小是
49.9999999px * 49.9999999px
2、同样 dpr = 2时:1.33333333rem*75=100px
即 100px * 100px
3、同样 dpr = 3时:1.33333333rem*112.5=150px
即 150px * 150px