移动端“响应式布局”’--rem

使用目的:为了让移动设计稿在大部分的移动设备上看起来有一致的展示效果,我们使用rem的像素单位。

方法一:

1、在页面引入js,获取屏幕大小,更新rem基准。

  (function () { 
      var currentWidth = document.documentElement.clientWidth || document.body.clientWidth
      nFont = currentWidth * 50 / 375;
      if (nFont > 50) {
        nFont = 50
      }
      getHtml = document.getElementsByTagName('html')[0]
      getHtml.style.fontSize = nFont + 'px';
    })();

2、设计稿除以100,得到实际尺寸。如(1920px  -> 192rem)

方法二:

原理:rem是相对于根元素<html>,这就意味着,我们只需要在根元素确定一个px字号(一般是UI设计师提供--设计稿寄出宽度一般为750px或640px,基础字体一般为75px或75px),则使用在线rem转换网站,就可以将px转rem。

使用方法:(以设计稿为750px,基础字体为75px为例)

1、首先引入app.js

(function(win) {
        var docEl = win.document.documentElement;
        var time;

        function refreshRem() {
                var width = docEl.getBoundingClientRect().width;
                if (width > 540) { // 最大宽度
                        width = 540;
                }
                var rem = width / 5; // 将屏幕宽度分成10份, 1份为1rem
                docEl.style.fontSize = rem + 'px';
                ///rem用font-size:75px来进行换算
                // 40/75
                // 20/37.5
        }

        win.addEventListener('resize', function() {
                clearTimeout(time);
                time = setTimeout(refreshRem, 1);
        }, false);
        win.addEventListener('pageshow', function(e) {
                if (e.persisted) {
                        clearTimeout(time);
                        time = setTimeout(refreshRem, 1);
                }
        }, false);

        refreshRem();

})(window);
//getBoundingClientRect();该方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,他返回的是一个对象,即Object,有6个属性 top 、bottom、right、left、width和height
//以前getBoundingClientRect()是IE特有的,目前FF3+,opera9.5+,safari 4,都已经支持这个方法。
//onpageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, onpageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。
//为了查看页面是直接从服务器上载入还是从缓存中读取,可以使用 PageTransitionEvent 对象的 persisted 属性来判断。 如果页面从浏览器的缓存中读取该属性返回 true,否则返回 false


/**
 * Created by Administrator on 2017/6/16.
 */

2、先用px写,写完了就用在线工具,将px转成rem即可。

posted @ 2018-04-16 19:10  Candy-Yao  阅读(381)  评论(0编辑  收藏  举报