zoukankan      html  css  js  c++  java
  • js+rem动态计算font-size的大小,适配各种手机设备!

    转载: http://www.jianshu.com/p/afbf518cc891

    需求:

    在不同的移动终端设备中实现,UI设计稿的等比例适配。

    方案:

    布局排版都用rem做单位,然后不同宽度的屏,js动态计算根节点的font-size。

    假设设计稿是宽750px来做的,书写css方便计算考虑,根节点的font-size假定为100px,得出设备宽为7.5rem。设计稿中标注的任何px数值都可以换算成px/100的rem值。

    就是说,每一个设备的宽度都定为7.5个rem,然后宽度非750px的设备里,就需要用JS对font-size做动态计算。

    换算关系为:根节点的font-size=设备宽度/7.5。

    即:document.documentElement.style.fontSize = document.documentElement.clientWidth*(window.devicePixelRatio||1) / 7.5 + 'px';

    注:需要考虑到dpr,即一倍屏两倍屏的问题。

    http://mobile.51cto.com/web-484304.htm

    备注:

    每个浏览器对最小font-size的支持,不尽相同。js动态计算的font-size值太小时,会导致超小屏上UI显示效果比预想中的偏大。

    比如,font-size计算是10px,但是chrome只支持到12px,他就按照12px去渲染了,这就会导致UI偏大了。(上面方案中的100px肯定是没有问题的)

    具体表现:

    浏览器 最小支持font-size

    PC chrome 12px (可以通过安装Advanced Font Settings插件支持到6px)

    Android和iOS 1px(只测试了主流浏览器,未做充分测试)

    cordova(Android和iOS) 9px

    //orientationchange方向改变事件

    (function (doc, win) {

    var docEl = doc.documentElement,//根元素html

    //判断窗口有没有orientationchange这个方法,有就赋值给一个变量,没有就返回resize方法。

    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',

    recalc = function () {

    var clientWidth = docEl.clientWidth;

    if (!clientWidth) return;

    //把document的fontSize大小设置成跟窗口成一定比例的大小,从而实现响应式效果。

    docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';

    };

    //alert(docEl)

    if (!doc.addEventListener) return;

    win.addEventListener(resizeEvt, recalc, false);//addEventListener事件方法接受三个参数:第一个是事件名称比如点击事件onclick,第二个是要执行的函数,第三个是布尔值

    doc.addEventListener('DOMContentLoaded', recalc, false)//绑定浏览器缩放与加载时间

    })(document, window);

    //alert(document.documentElement.clientWidth/320)

  • 相关阅读:
    What is PE ?
    指针和引用(int*、int&、int*&、int&*、int**)
    诺顿12 免许可 英文版 Symantec Endpoint Protection 12.1.671.4971 下载
    RadControls for ASP.NET AJAX Q2 2011 最新版下载+源码下载
    请大家给小弟 改个SQL的错 谢谢啦!!
    [置顶]DAEMON Tools Pro Advanced 4.41.0314.0232 破解版
    Setting Environment Variable PATH on Ubuntu
    小弟的程序有点问题 请高手帮忙改一下
    Session 有没有必要使用它
    ASP.NET 2.0加密Web.config 配置文件
  • 原文地址:https://www.cnblogs.com/lrr0618/p/6626471.html
Copyright © 2011-2022 走看看