rem的認識和個人見解
看了很多rem的講解和很多部落格,這裡我說說自己對rem的認識。
rem : 作為css3新的屬性單位,基於document.documentElement元素的fontSize基準值來確定其初始值,讓處於
document內的所有元素基於document.documentElement設定的fontSize來做賦值
比em更直觀,也不容易造成混亂疊加;
簡單一句話,這就是rem的原理和設定1單位rem的方法。
rem是前端開發人員對mobile裝置適配開發的一大主力,所以充斥著很多適配方法,力致於讓網頁在mobile裝置得到更好地展現,讓使用者能在mobile裝置得到更好地體驗。
說起對rem的適配方法,主要是針對document.documentElement元素fontSize屬性的設定來調整H5在mobile裝置上所佔位置的調整;說到mobile裝置,那麼還要說到一個問題,那就是物理畫素、邏輯畫素、以及畫素比,通常我們的UI設計師們給我們的市面上通用的一些mobile裝置H5設計稿,比如640的和750的設計稿,640的設計稿是基於Iphone4和iPhone5s來做的設計稿,750則是根據iPhone6來做的,這裡我們要注意一點的就是,設計師們做的640和750的設計稿,是基於物理畫素做的,而我們前端開發人員用的css單位 px這些是基於邏輯畫素來寫的,所以我們需要進行轉換,那就需要畫素比了,因為 ,
物理畫素 = 邏輯畫素 * 畫素比;
經過轉換後,我們得到了我們開發所需的邏輯畫素,這時候,我們就開始考慮做適配了,這裡有一篇文章講得很好,可是我沒找作者,就引用不過來,所以在這打個連結(點選開啟連結),這裡講rem的適配講的非常透徹。
根據docume.documentElement元素的fontSize決定熱門的單位值,
這裡就根據640設計稿和750設計稿來說,因為設計稿不一樣,所依照的基準值就不一樣;
6.4 根據640設計稿在裝置上做的一個開發基礎值, 基礎值又為了更好開發,將根元素font-size設定為100px,vardeviceWidth = document.documentElement.clientWidth;
fontSize = deviceWidth / 6.4 + 'px';640
fontSize = deviceWidth / 10 + 'px';750
比例 * 1rem,就得到了 設計尺寸變換單位rem後得到的rem值;
*/
/* 如果你需要對相容裝置進行限制,則需要對裝置寬度進行判斷 */ if(deviceWidth>640) deviceWidth = 640; fontSize = deviceWidth/6.4+'px'; 想擁有更好地使用者體驗,就需要考慮頁面在mobile裝置上的顯示問題,這就要涉及到畫素比 如果畫素比大於2,是3,或4,那麼我們的頁面在基於drp = 2的情況下就考慮縮放, 因為縮放比例最大和最小不過1,所以,我們使用 1 / drp 得到縮放比例, 然後賦值給擁有viewport屬性的 meta標籤,我們還要對其 初始縮放比例、最大、最小縮放比例進行設定;
initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + '
varscale = 1 / devicePixelRatio;
如果你考慮到pc使用px,mobile裝置使用rem,那麼你就得去識別瀏覽器核心,因為mobile裝置的瀏覽器核心和pc端的瀏覽器核心是不一樣的,同時你的css也得寫兩套,
如何判斷,那就得用到BOM的API navigator,
最近在寫一個手機端的東西,這邊把我配置的rem邏輯附上,希望大家多找麻煩,畢竟我是菜鳥