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編輯器插件開發時,單位計算複雜。
備註:
每一個人評判的標準不一樣。