USharing
开放博客

rem.js的使用

1.首先在我们的html页面中引入meta标签

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

2.然后,在html页面中引入我们的rem.js适配脚本。

;(function (designWidth, maxWidth) {
    var doc = document,
        win = window;
    var docEl = doc.documentElement;
    var tid;
    var rootItem, rootStyle;

    function refreshRem() {
        //获取屏幕宽度
        var width = docEl.getBoundingClientRect().width;
        if (!maxWidth) {
            maxWidth = 540;
        }
        ;
        if (width > maxWidth) {
            width = maxWidth;
        }
        //与淘宝做法不同,直接采用简单的rem换算方法1rem=100px
        var rem = width * 100 / designWidth;
        //兼容UC开始
        rootStyle = "html{font-size:" + rem + 'px !important}';
        rootItem = document.getElementById('rootsize') || document.createElement("style");
        if (!document.getElementById('rootsize')) {
            document.getElementsByTagName("head")[0].appendChild(rootItem);
            rootItem.id = 'rootsize';
        }
        if (rootItem.styleSheet) {
            rootItem.styleSheet.disabled || (rootItem.styleSheet.cssText = rootStyle)
        } else {
            try {
                rootItem.innerHTML = rootStyle
            } catch (f) {
                rootItem.innerText = rootStyle
            }
        }
        //兼容UC结束
        docEl.style.fontSize = rem + "px";
    };
    refreshRem();

    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 = "16px";
    } else {
        doc.addEventListener("DOMContentLoaded", function (e) {
            doc.body.style.fontSize = "16px";
        }, false);
    }
})(375, 750);

3.最后,对我们刚刚创建的rem.js脚本进行一些简单的修改。回到我们上方的代码,整个代码就是一个函数,这个函数有两个参数,注意看一下代码的第一行,两个参数分别是designWidth 和maxWidth,顾名思义,就是我们设计稿的宽度和我们设定的最大宽度。根据UI设计师给出的设计稿的宽度和规定的最大宽度给这两个参数进行传值。该如何进行传值呢,看一下上面代码的最后一行,是不是有两个数字即375750,就是在这两个数字分别就是对应着designWidth 和maxWidth,我们只需更改这两个数字,即可完成传值
4.一切都设置好之后,我们便可以根据设计稿的尺寸直接进行网页搭建了。如果设计稿上面某一个元素的尺寸是256px,那么我们在css样式中,将它的尺寸设置成2.56rem即可,即1rem=100px。元素的尺寸也按照这种关系转换即可。(最后375改为750的话,1rem=50px的吧)

赞(0) 打赏
未经允许不得转载:USharing » rem.js的使用

觉得文章有用就打赏一下文章作者

微信扫一扫打赏