H5移动端适配(flexible.js)

流程:
1、设定ui设计稿的尺寸大小为基准
2、算出当前屏幕大小
3、跟ui设计稿算出比例值
4、然后直接用设计稿上标的值*(3、跟ui设计稿算出比例值)

remFontSize.js

(function flexible(window, document) {
    //这里直接以iphone6的尺寸为设计稿
    var BASE_WIDTH=750;
    var BASE_HEIGHT=1334;
    var docEl = document.documentElement
    var dpr = window.devicePixelRatio || 1

    // adjust body font size
    function setBodyFontSize() {
        if (document.body) {
            document.body.style.fontSize = (12 * dpr) + 'px'
        }
        else {
            document.addEventListener('DOMContentLoaded', setBodyFontSize)
        }
    }

    setBodyFontSize();

    // set 1rem = viewWidth / 10
    function setRemUnit() {
        var w1 = docEl.clientWidth / BASE_WIDTH;
        var h1 = docEl.clientHeight / BASE_HEIGHT;
        var rem = Math.min(w1, h1);
        docEl.style.fontSize = rem * 100 + 'px'
    }

    setRemUnit()

    // reset rem unit on page resize
    window.addEventListener('resize', setRemUnit)
    window.addEventListener('pageshow', function (e) {
        if (e.persisted) { setRemUnit() }
    })

    // detect 0.5px supports
    if (dpr >= 2) {
        var fakeBody = document.createElement('body')
        var testElement = document.createElement('div')
        testElement.style.border = '.5px solid transparent'
        fakeBody.appendChild(testElement)
        docEl.appendChild(fakeBody)
        if (testElement.offsetHeight === 1) {
            docEl.classList.add('hairlines')
        }
        docEl.removeChild(fakeBody)
    }
}(window, document))

比如我们需要全屏幕显示:


.wrapper {
    width: 7.5rem;
    margin: 0px auto;
    height: 13.34rem;
    background-color: antiquewhite;
}

设置宽为7.5rem 高为:13.34rem;

公式:

(w1/375)=(x/(iphone6上的像素值y))

x=(w1/375)*y

(w1/375)=我们设置的rem;

所以x=y*rem

你可能感兴趣的:(html5学习笔记)