px rem 轉換的幾種方法(解析度字型調整)
目前(2016-06-19)px轉rem 的工具已經不少了。下面介紹幾個轉換的方案。
轉換方式1: 使用 線上-px轉rem
轉換方式2: 使用 sublime text 3 rem外掛自動轉換。
效果如下:
使用步驟
1、下載外掛 https://github.com/hyb628/cssrem.git
2、進入packages目錄:Sublime Text 3 編輯器 -> Preferences -> Browse Packages…
然後點選開啟,將下載好的 cssrem 檔案放入其中,重啟Sublime Text即可。
配置引數(可選)
引數配置檔案:Sublime Text3 -> Preferences -> Package Settings -> cssrem
px_to_rem - px轉rem的單位比例,預設為40。
max_rem_fraction_length - px轉rem的小數部分的最大長度。預設為6。
available_file_types - 啟用此外掛的檔案型別。預設為:[“.css”, “.less”, “.sass”]。
我在配置檔案 cssrem.sublime-settings裡修改了單位比例為100
具體的比例引數還是看個人平時切圖怎麼設定引數為準。
3、重啟Sublime Text。
轉換方式3: 使用node Grunt 來執行轉換。
轉換方式4: 常用設定轉換。
1.針對設計稿 計算rem
所有瀏覽器都一致預設保持著 16px 的預設字號 1em:16px ,但是 1:16 的比例不方便計算。
在這裡文件元素設定 font-size: 62.5%,可以很方便的利用十進位制進行計算了,(CSS 預處理工具可以使用預設值)
html {font-size: 62.5%; /* 10 ÷ 16 × 100% = 62.5% */}
body {font-size: 1.4 rem; /* 1.4 × 10px = 14px */}
h1 { font-size: 2.4rem; /* 2.4 × 10px = 24px */}
所以如果我有一個寬度為640的設計稿,通過上面的方法算出對應元素rem的大小 。
(附註:實際專案不可以設定成 font-size: 62.5%,因為chrome不支援小於12px的字型,計算小於12px的時候,會預設取12px去計算,導致chrome的rem計算不準確)
2。針對不同解析度計算font-size
監聽瀏覽器更改 html的font-size
(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 = 20 * (clientWidth / 320) + 'px';
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
配合css預處理工具計算 rem 值。 Sass、LESS 、Stylus
5、js 處理響應式 px 轉換 rem
~ function(desW) {
var winW = document.documentElement.clientWidth;
if(winW > desW) {
var oMain = document.querySelector(".box");
oMain.style.margin = "0 auto";
oMain.style.width = desW + "px";
return;
}
document.documentElement.style.fontSize = winW / desW * 100 + "px";
}(640);
好處就是相容性完美,缺點是網路請求超慢的時候,所有東西都會放大再縮小,會出現閃屏!
6、px 轉換 rem 工具(– 熱心網友提供,非常感謝 –)