移動端 rem適配方法

                    rem適配
一, 網易適配方法
         屏幕寬度/設計稿rem寬度=頁面動態font-size值css

  (function(doc, win) {
    var docEl = doc.documentElement;
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
    recalc = function() {
      var clientWidth = docEl.clientWidth > 750 ? 750 : docEl.clientWidth;
      if(!clientWidth) return;
      docEl.style.fontSize = clientWidth / 7.5 + 'px';
    };
    if(!doc.addEventListener) return;
    win.addEventListener(resizeEvt, recalc, false);
    doc.addEventListener('DOMContentLoaded', recalc, false);
  })(document, window);

 

  



解釋:

        這樣就設置好了每一個頁面的根fonts-size,由於rem單位是基於根font-size,所以只要肯定一種設計稿對應手機的換算,其他屏幕尺寸都可自動適配。html

       上面咱們得出設計稿換算rem的基準值是100,所以只須要把設計稿上的px值除以100即爲咱們要的rem值。sass

        > Px/100=rem,因此100px=1rem,25px=0.25rem

二, 手淘適配方法

  大名鼎鼎的Flexible

  引入: 直接引用阿里的CDN文件(或下載到本地引入)less

  <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>

  設定: 頁面不要設定 。Flexible會自動設定每一個屏幕寬度的根font-size、動態viewport、針對Retina屏作的dpr。

  換算:假設拿到的設計稿和上述網易的同樣都是750,Flexible會把設計稿分爲10份,能夠理解爲頁面width=10rem,即1rem=75px,因此根font-size(基準值)=75px。以後的css換算rem公式爲:

  px/75=rem,因此100px=100/75=1.33rem,50px=50/75=0.66rem

換算工具:
  顯然,能夠看出px與rem的換算由於基準值的不一樣而有些複雜,甚至須要藉助計算器的輔助。在這裏推薦一個換算神器:"cssrem"

  cssrem: 配值設置

    px_to_rem - px轉rem的單位比例,假設拿到設計稿750,基準值是75,此處就設75編輯器

    max_rem_fraction_length - px轉rem的小數部分的最大長度。默認爲6。工具


    available_file_types - 啓用此插件的文件類型。[".css", ".less", ".sass", ".scss"]。flex

(function(doc, win) {
  var docEl = doc.documentElement,
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
    recalc = function() {
      var clientWidth = docEl.clientWidth;
      if (!clientWidth) return;
      docEl.style.fontSize = 32 * (clientWidth / 320) + 'px';
    };
  if (!doc.addEventListener) return;
  win.addEventListener(resizeEvt, recalc, false);
  doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

 






網易方案
  一、拿到設計稿除以100,獲得寬度rem值spa

  二、經過給html的style設置font-size,把1裏面獲得的寬度rem值代入x document.documentElement.style.fontSize = document.documentElement.clientWidth / x + ‘px‘;插件

  三、設計稿px/100便可換算爲remssr

  優:經過動態根font-size來作適配,基本無兼容性問題,適配較爲精準,換算簡便。

  劣:無viewport縮放,且針對iPhone的Retina屏沒有作適配,致使對一些手機的適配不是很到位。


手淘方案
  一、拿到設計稿除以10,獲得font-size基準值

  二、引入flexible

  三、不要設置meta的viewport縮放值

  四、設計稿px/ font-size基準值,便可換算爲rem

  優:經過動態根font-size、viewpor、dpr來作適配,無兼容性問題,適配精準。

  劣:須要根據設計稿進行基準值換算,在不使用sublime text編輯器插件開發時,單位計算複雜。



備註:
  每一個人評判的標準不一樣。

相關文章
相關標籤/搜索