web移動端適配方案


web移動端常用解決方案:

一、通過js+rem,這里有一個解決方案(http://imochen.github.io/hotcss/)

1.1、rem兼容性(https://caniuse.com)

ios:6.1系統以上

android:2.1系統以上

1.2、什么是rem的

rem其實就是根據網頁的根元素來設置字體大小,和em(font size of the element)的區別是,em是根據其父元素的字體大小來設置。現在大部分瀏覽器默認font-size:16px。如果一個p標簽想要設置font-size為12px,用rem作單位則變成了font-size:0.75rem(12/16=0.75)。根據這個原理,將rem運用到布局,則可以實現不同分辨率的適配。

1.3、rem基准值計算

實際開發中,我們不可能將默認font-size大小作為基准值,這個基准值應該是是根據ui設計稿獲取的。如果ui以iphone6(375px)的分辨率為設計基准,設計圖的分辨率就為750px(dpr為2),那么我們可以以375/10=37.5為基准(也可以不除已10,這里只是為了不讓font-size值太大)。

1.4、動態計算font-size的值

方法一、利用css媒體查詢

@media (min-device-width : 375px) and (max-device-width : 667px) and (-webkit-min-device-pixel-ratio : 2{

      html {
    font-size: 37.5px;
  }
}
方法二、js計算
document.getElementsByTagName('html')[0].style.fontSize = window.innerWidth / 10 + 'px';
 
1.5、rem適配進階
當ui使用ipone6(375px)作為設計基准,完成的設計圖分辨率雙倍的原因是iphone6屬於高清屏,設備像素比(device pixel ratio)dpr為2。
通過js的window.devicePixelRatio(這個方法在安卓上可能不准確)獲取到當前設備的dpr,拿到了dpr之后就可以在viewport meta頭里,取消讓瀏覽器自動縮放頁面,而自己去設置viewport的content
meta.setAttribute('content', 'initial-scale=' + 1/dpr + ', maximum-scale=' + 1/dpr + ', minimum-scale=' + 1/dpr + ', user-scalable=no');
 
這樣一來在開發時就可以設置font-size為設計圖大小,這里iphone6設計圖font-size就為75px,而且還解決了圖片高清問題和1像素邊框的問題
 

       

二、淘寶flexible方案(https://github.com/amfe/article/issues/17)。

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM