cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Untuk halaman yang ditulis dalam rem, teks yang dipaparkan pada telefon Android adalah biasa, tetapi teks yang dipaparkan pada Apple adalah sangat kecil Mengapa?


Halaman ditulis dalam rem Apabila saya menguji telefon bimbit dengan f12 dalam chrome, semuanya betul. Tetapi pada telefon sebenar, Android betul Mengapa teks yang dipaparkan pada telefon Apple begitu kecil?

仅有的幸福仅有的幸福2743 hari yang lalu1052

membalas semua(2)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-05-24 11:38:21

    Ini adalah sebab untuk DPR Sesetengah ios mempunyai skrin 2x atau skrin 3x, jadi ia akan menyebabkan skrin kelihatan lebih kecil daripada strategi Penyelesaian Android

    ;

    (fungsi(menang, lib) {

    var doc = win.document;
    var docEl = doc.documentElement;
    var metaEl = doc.querySelector('meta[name="viewport"]');
    var flexibleEl = doc.querySelector('meta[name="flexible"]');
    var dpr = 0;
    var scale = 0;
    var tid;
    var flexible = lib.flexible || (lib.flexible = {});
    
    if (metaEl) {
        //console.warn('将根据已有的meta标签来设置缩放比例');
        var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/);
        if (match) {
            scale = parseFloat(match[1]);
            dpr = parseInt(1 / scale);
        }
    } else if (flexibleEl) {
        var content = flexibleEl.getAttribute('content');
        if (content) {
            var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
            var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
            if (initialDpr) {
                dpr = parseFloat(initialDpr[1]);
                scale = parseFloat((1 / dpr).toFixed(2));
            }
            if (maximumDpr) {
                dpr = parseFloat(maximumDpr[1]);
                scale = parseFloat((1 / dpr).toFixed(2));
            }
        }
    }
    
    if (!dpr && !scale) {
        var isAndroid = win.navigator.appVersion.match(/android/gi);
        var isIPhone = win.navigator.appVersion.match(/iphone/gi);
        var devicePixelRatio = win.devicePixelRatio;
        if (isIPhone) {
            // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
            if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
                dpr = 3;
            } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
                dpr = 2;
            } else {
                dpr = 1;
            }
        } else {
            // 其他设备下,仍旧使用1倍的方案
            dpr = 1;
        }
        scale = 1 / dpr;
    }
    
    docEl.setAttribute('data-dpr', dpr);
    if (!metaEl) {
        metaEl = doc.createElement('meta');
        metaEl.setAttribute('name', 'viewport');
        metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
        if (docEl.firstElementChild) {
            docEl.firstElementChild.appendChild(metaEl);
        } else {
            var wrap = doc.createElement('p');
            wrap.appendChild(metaEl);
            doc.write(wrap.innerHTML);
        }
    }
    
    function refreshRem() {
        var width = docEl.getBoundingClientRect().width;
        if (width / dpr > 750) {
            width = 750 * dpr;
        }
        var rem = width / 750 * 100;   // 设计图 750
        docEl.style.fontSize = rem + 'px';
        flexible.rem = win.rem = rem;
    }
    
    win.addEventListener('resize', function() {
        clearTimeout(tid);
        tid = setTimeout(refreshRem, 300);
    }, false);
    win.addEventListener('pageshow', function(e) {
        if (e.persisted) {
            clearTimeout(tid);
            tid = setTimeout(refreshRem, 300);
        }
    }, false);
    
    if (doc.readyState === 'complete') {
        doc.body.style.fontSize = 12 * dpr + 'px';
    } else {
        doc.addEventListener('DOMContentLoaded', function(e) {
            doc.body.style.fontSize = 12 * dpr + 'px';
        }, false);
    }
    
    refreshRem();
    
    flexible.dpr = win.dpr = dpr;
    flexible.refreshRem = refreshRem;
    flexible.rem2px = function(d) {
        var val = parseFloat(d) * this.rem;
        if (typeof d === 'string' && d.match(/rem$/)) {
            val += 'px';
        }
        return val;
    }
    flexible.px2rem = function(d) {
        var val = parseFloat(d) / this.rem;
        if (typeof d === 'string' && d.match(/px$/)) {
            val += 'rem';
        }
        return val;
    }
    

    })(tetingkap, tetingkap['lib'] || (tetingkap['lib'] = {}));

    balas
    0
  • 大家讲道理

    大家讲道理2017-05-24 11:38:21

    Sahkan sama ada maklumat meta viewport adalah betul.

    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">

    balas
    0
  • Batalbalas