eagle.h
eagle.h
你可以试试这个不知道行不行,https://github.com/chuckcarpenter/REM-unit-polyfill。另外这套方案是针对手机端的,所以也没有resize事件的监控。
某些Android手机的默认浏览器上,可以看到效果。写一个测试页面,第一步:先用js获取一个宽度设置为 1rem 的div 的实际px值和html这个标签的font-size的px值,这时候,因为没有做任何修改,所以获取到的font-size为defaultFontSize;第二步:修改一下html标签的font-size值比如设为 52px(为htmlFontSize),在获取一次上面两个值,这时候1rem = 1 * (htmlFontSize / 16) * defaultFontSize;第三步,修改一下系统的字体大小,比如设为超大,然后再刷新重复上面的操作,获取两次上面两个值,代入到上面的式子做一下计算就出来了。主要因为Android会有defaultFontSize不为16的情况,所以才要特殊处理。希望我说明白了。
在没有设置html的fontSize值时,获取html fontSize的计算值,得到的就是defaultFontSize: window.getComputedStyle(document.documentElement, null).getPropertyValue('font-size') 这时html fontSize的设置值为空: document.documentElement.style.fontSize 修改系统的默认字体在Android某些机型上会影响计算值(但这个值是个近似值,所以使用1rem的宽度的计算值作为计算基准)。不管是css还是js,其实都是修改html fontSize的设置值,不存在覆盖的问题。 计算值有单独的算法,而rem是根据html fontSize的计算值进行计算的: 没有设置html的fontSize的时候: 1rem = 1 * computedFontSize = 1 * defaultFontSize; 将html的fontSize设置为百分百值时: 1rem = 1 * computedFontSize = 1 *...
正常来说手机上浏览器的默认字体大小应该是16px(比如ios中),也就是说 defaultFontSize 一直是 16px,这样就不存在除以 16 再乘以 defaultFontSize 的情况了。这时 1rem = 1 * setFontSize ,完全符合对rem的定义。 Android上出现的 bug 导致在修改了系统字体大小后 defaultFontSize 发生了变化,而在计算fontSize的计算值时,计算公式中隐含的浏览器默认字体大小依然是16px,所以必须进行除以16再乘以 defaultFontSize 这样的处理。
是的,用setFontSize不会产生误会。
华为 C8818的默认浏览器
ios设备,以及微信里面都不会随系统字体大小改变html的默认字体大小,主要是一些Android的默认浏览器和这些Android设备的客户端的webview里面有。
华为p6上的问题可能是 d.remove() 这个bug导致的,已经修改。ios不清楚你说的是什么问题。
h.style.fontSize是因为使用了css设置html标签的font-size,所以获取不到,不影响使用。去掉document.documentElement.style.fontSize 这行的注释即可(于css设置有冲突所以实际使用中要注释掉)。
不打扰,交流才能有获得, 4.1的方案中使用的是getPropertyValue('font-size'),这个值浏览器会四舍五入为整数,其实是不精确的。 var htmlFontSize = parseFloat(window.getComputedStyle(h, null).getPropertyValue('font-size')); document.documentElement.style.fontSize = window.innerWidth / designWidth * rem2px / htmlFontSize * 100 + '%'; 4.2的方案中使用的是计算一个1rem的div的getPropertyValue('width'),这个值是个精确值,会保留小数部分。 var defaultFontSize = parseFloat(window.getComputedStyle(d, null).getPropertyValue('width')); document.documentElement.style.fontSize = window.innerWidth /...