不是所有元素都需要缩放的。
最容易举例的就是1px的border,无论什么屏,无论像素密度多少,都要准确的显示1物理像素
淘宝目前的做法即是,通过脚本检测设备的像素密度,再设置文档的根font-size与viewport的缩放值,从而让px能够准确的显示为物理像素。
我们的做法是:获取设备像素密度后,设置根节点的fontSize,然后文档中全部使用rem+px结合。
window.onload = function () {
var nameAttr = document.createAttribute('name');
nameAttr.value = 'viewport';
var contentAttr = document.createAttribute('content');
var dpr = window.devicePixelRatio || 1;
contentAttr.value = 'width=device-width,initial-scale=' + (1 / dpr) + ',target-densitydpi=device-dpi,user-scalable=no';
var element = document.createElement('meta');
element.attributes.setNamedItem(nameAttr);
element.attributes.setNamedItem(contentAttr);
document.head.appendChild(element);
document.getElementsByTagName('html')[0].style.fontSize = (16 * dpr) + 'px';
};
目前兼容良好。




