前几天,几个手机端和电脑端页面须要开发,手机端页面为了更好的适配,固然就用了rem单位。
设计稿是750px的,就直接经过想着设计稿上的元素是多少像素,css就跟着是多少的rem就行了,简单的换算了下,三行代码就来了css
html { font-size: calc(100vw / 750); }
当时也没有想太多,反正以为如今手机浏览器兼容性通常都不错,就果断的用了。可次日,同事说再他浏览器上大了好多,我想多是vw单位有兼容性问题,css不能作的,果断的换了js来实现,小case,代码来了html
var w = window.innerWidth; document.documentElement.style.fontSize = w / 750 + 'px';
想着完事大吉了,可曾想,好戏在后头浏览器
这过程当中,测试也没有怎么测试,今天代码上到线上,才告诉我说安卓机有问题。开始我有点不信,直到我看到了真相,不得不信了。编辑器
看到的眼前的界面,首先应该定位问题,才好解决问题。工具
看了半天看不出什么问题,因而决定抽丝剥茧,剔除其余代码,就留一张图片,不断的改变大小,没以为有什么问题。
忽然想到,把浏览器的宽度,根元素的字体大小,以及图片的实际大小给打印出来看看。这下好了,根元素字体大小是0.5px
,没啥问题,浏览器宽度是375,关键是图片大小为750px
,我可设置的750rem
呀,不是应该是375px
吗?不带这样的。好吧,我错了,原来是由于这个浏览器根元素的字体大小不能小于1px
。测试
问题就这样阴差阳错的找到了,这还没完,得解决问题。字体
开始想着要不用js来测试根元素是否是不能小于1px,而后决定对页面进行总体伸缩。
可在我印象中,这样会形成页面模糊掉,因而果断放弃。设计
既然不能小于1px
,那我大于应该是能够了吧,大多少才合适呢,值也不可以随便设置,否则之后还得边切图边拿个计算器在旁边算,想一想画面很美观。固然可使用一些工具来自动的处理,得去找来配置,但如今不想去折腾那些了,先解决燃眉之急吧。我开始想放大100倍,总感受不太妥,因而放大了10倍,这样375宽的屏幕不就是5px
了吗,5 > 1
,这样总行了吧,相应的代码中的rem值得缩小10倍,不就完美解决了吗。code
固然只是解决了基准,如今下一步得把代码中的值给替换掉。怎么作呢?htm
只能写个脚原本作了,很简单
rem
前面的数值,除以10,给出正则\d+(\.\d+)?
当当当,大功告成,完美收官!!!
等等,别急---
因为不是响应式的,pc端和手机端不是同一个页面,测试反馈pc端的页面在谷歌上显示不正常。
这还了得,IE不正常还情有可原,奈何谷歌也不正常,这不是存心跟我做对吗。
一看代码,原来同事也使用了rem单位。
关键是,个人浏览器上显示正常呀,可测试的电脑上的就是有问题。我吐槽了一句,你那是什么年代的浏览器呀。一看版本,75。。。
那尼(ÒωÓױ)!,我错怪你了
来,继续祭出个人屠龙刀,打开开发者工具,不停的调整字体大小。
根元素字体大小计算出来是2点几,没毛病,关键是我放大还好,只要缩小到必定的程度,页面元素就不跟着一块儿伸缩了。
好吧,我想起来了,谷歌有个最小字体限制的,高版本把这个限制去了,因此个人看起来正常。
小记一笔,与君共勉
好了,终于完了,睡觉😪~~~