根据UA动态设置font-size

Posted ljwk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据UA动态设置font-size相关的知识,希望对你有一定的参考价值。

根据html的font-size使用rem来优化移动端页面

(function () {
    var h = window,
        m = document;
    var c = m.documentElement,
        a = h.navigator.userAgent,
        k = c.querySelector(‘meta[name="viewport"]‘),
        n = 0,
        d = 0,
        o = 100,
        f = {},
        e;
    if (!n && !d) {
        var j = a.match(/android/gi),
            i = a.match(/iphone/gi),
            l = h.devicePixelRatio;
        if (i) {
            if (l >= 3 && (!n || n >= 3)) {
                n = 3;
            } else {
                if (l >= 2 && (!n || n >= 2)) {
                    n = 2;
                } else {
                    n = 1;
                }
            }
        } else {
            n = 1;
        }
        d = 1 / n;
    }
    c.setAttribute("data-dpr", n);
    if (k) {
        var g = k.getAttribute("content").match(/initial-scale=([d.]+)/);
        if (g) {
            d = parseFloat(g[1]);
            n = parseInt(1 / d);
        }
    }
    if (!k) {
        k = m.createElement("meta");
        k.setAttribute("name", "viewport");
        k.setAttribute("content", "initial-scale=" + d + ", maximum-scale=" + d + ", minimum-scale=" + d +
            ", user-scalable=no");
        if (c.firstElementChild) {
            c.firstElementChild.appendChild(k);
        } else {
            var b = m.createElement("div");
            b.appendChild(k);
            m.write(b.innerHTML);
        }
    }
    refreshRem = function () {
        var p = c.clientWidth;
        if (!p) {
            return;
        }
        f.fontSize = 100 * (p / 375);
        var z = f.fontSize;
        z = z >= 144 ? 144 : z;
        c.style.fontSize = z + "px";
    };
    h.addEventListener("resize", function () {
        clearTimeout(e);
        e = setTimeout(refreshRem, 300);
    }, false);
    h.addEventListener("pageshow", function (p) {
        if (p.persisted) {
            clearTimeout(e);
            e = setTimeout(refreshRem, 300);
        }
    }, false);
    refreshRem();
})();

以上是关于根据UA动态设置font-size的主要内容,如果未能解决你的问题,请参考以下文章

根据容器宽度动态调整文本大小

rem em

JS根据设备宽度设置根节点(html)font-size字体大小

动态设置移动页面字体大小技术方案

如何用php伪造浏览器ua?

在android中动态创建选项卡并使用传入的参数加载片段