1. 程式人生 > >rem的認識和個人見解

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,
取100只是為了計算方便,減少浮點數對佈局的影響 1REM=100px; 如果設計稿是750, 因為螢幕是偶數,寬度只能是偶數,不能出現7.5,所以750的設計稿不能預設設定100px, 得到7.5來使用,它是一個單數, 為了更好地開發,我們設定它為75px,750的設計稿,屏寬10rem,1rem=75; 開發基礎值為 10 */

             vardeviceWidth = document.documentElement.clientWidth;

fontSize = deviceWidth / 6.4 + 'px';640

                 fontSize = deviceWidth / 10 + 'px';750

   /* 為了更好地體現出設計介面,那麼我們將根據依據設計稿算出來的基礎值來做各個mobile裝置的參照值        所以就有了,fontSize = 視口寬度 / 基礎值 + px; 然後就是css的px和rem的換算,為了更快,更方便的轉換,在這裡,我推薦使用預編譯軟體            LESS 、sass SCSS            如果使用LESS,那麼換算函式則為                @baseFontSize:設計稿對fontSize計算的值;                .px2Rem(@name,@px){                        @{name}:@px/  @baseFontSize * 1rem;                 }        換算原理,按照設計尺寸@px / 設計稿平分的份數 得到 設計尺寸佔據平分份數的比例,
            比例 * 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邏輯附上,希望大家多找麻煩,畢竟我是菜鳥