flexible.js源碼解析及移動端的適配開發(fā)

  1. 前期知識點準(zhǔn)備

    • devicePixelRatio
      Window 接口的devicePixelRatio返回當(dāng)前顯示設(shè)備的物理像素分辨率與CSS像素分辨率之比贾费。 此值也可以解釋為像素大小的比率:一個CSS像素的大小與一個物理像素的大小眶掌。 簡單來說骗绕,它告訴瀏覽器應(yīng)使用多少屏幕實際像素來繪制單個CSS像素。     
      
    • viewport
      視口是用戶在網(wǎng)頁上的可見區(qū)域盖矫。
      視口隨設(shè)備而異庭敦,并且在移動電話上的視口會比在計算機屏幕上的視口小。
      在平板電腦和手機之前诅需,網(wǎng)頁僅設(shè)計用于計算機屏幕,并且網(wǎng)頁具有靜態(tài)設(shè)計和固定大小是很常見的荧库。
      然后堰塌,當(dāng)我們開始使用平板電腦和手機上網(wǎng)時,固定大小的網(wǎng)頁太大了分衫,無法容納視口场刑。要解決此問題,這些設(shè)備上的瀏覽器會按比例縮小整個網(wǎng)頁以適合屏幕大小蚪战。
      
  1. 代碼分析

    // 主要代碼牵现,設(shè)置html根節(jié)點的大小,rem根據(jù)根節(jié)點fontsizize的大小來進行動態(tài)變化屎勘。
         var docEl = document.documentElement
         var dpr = window.devicePixelRatio || 1
      
       // set 1rem = viewWidth / 10
    // 為什么要 viewWidth / 10施籍,主要是進行劃分比例居扒,后面根據(jù)設(shè)計圖編寫的時候可以進行按照這個來進行縮放概漱,那么 viewWidth / 20 可不可以 當(dāng)然可以。
            function setRemUnit() {
                var rem = docEl.clientWidth / 10
                docEl.style.fontSize = rem + 'px'
            }
    
            setRemUnit()
    
    // 主要檢測瀏覽器是否支持hairline
          if (dpr >= 2) {
                var fakeBody = document.createElement('body')
                var testElement = document.createElement('div')
                testElement.style.border = '.5px solid transparent'
                fakeBody.appendChild(testElement)
                docEl.appendChild(fakeBody)
                if (testElement.offsetHeight === 1) {
                    docEl.classList.add('hairlines')
                }
                docEl.removeChild(fakeBody)
            }
    
    
    1. 如何使用

      安裝的話移步這邊文章

      可以在sass里面編寫一步到位的sass函數(shù)喜喂,這樣會在編寫時候直接粘貼設(shè)計圖上面的像素

      /*
      * 根據(jù)1080p分辨率來設(shè)置比率
      **/
      $base-design-font-size:108px;
      
      /*
      * @Functions
      * @description 去掉數(shù)值后的單位
      * @param 含單位字符的數(shù)值
      * @return pure number 純數(shù)字
      */
      @function __strip-units($number){
        @if type-of($number) == 'number'{
          @return $number/($number*0 +1);
        }
        @warn 'Exception in method __stip-unit : Not a number value: #{$number}';
        @return $number;
      }
      
      /*
      * @description Convert the px to rem (將實際的設(shè)計尺寸px轉(zhuǎn)為相對的rem)
      * @param $origLen 設(shè)計圖上的實際尺寸
      * @return rem
      */
      @function px2rem($origLen){
        $origLen : __strip-units($origLen);
        $base-design-font-size: __strip-units($base-design-font-size);
        @return #{$origLen/$base-design-font-size}rem;
      }
      
      
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓤摧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子玉吁,更是在濱河造成了極大的恐慌照弥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件进副,死亡現(xiàn)場離奇詭異这揣,居然都是意外死亡悔常,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門给赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來机打,“玉大人,你說我怎么就攤上這事片迅〔醒” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵柑蛇,是天一觀的道長芥挣。 經(jīng)常有香客問我,道長耻台,這世上最難降的妖魔是什么空免? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盆耽,結(jié)果婚禮上鼓蜒,老公的妹妹穿的比我還像新娘。我一直安慰自己征字,他們只是感情好都弹,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匙姜,像睡著了一般畅厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮昧,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天框杜,我揣著相機與錄音,去河邊找鬼袖肥。 笑死咪辱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椎组。 我是一名探鬼主播油狂,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寸癌!你這毒婦竟也來了专筷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蒸苇,失蹤者是張志新(化名)和其女友劉穎磷蛹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪烤,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡味咳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年庇勃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槽驶。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡匪凉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捺檬,到底是詐尸還是另有隱情再层,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布堡纬,位于F島的核電站聂受,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烤镐。R本人自食惡果不足惜蛋济,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炮叶。 院中可真熱鬧碗旅,春花似錦、人聲如沸镜悉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侣肄。三九已至旧困,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稼锅,已是汗流浹背吼具。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矩距,地道東北人拗盒。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像锥债,于是被迫代替她去往敵國和親陡蝇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容