移動端適配---響應式布局---rem布局---vw布局--網易適配


rem和vw布局主要都是為了更好地適配移動端,畢竟手機的型號太多了。

在進行移動端設計的時候,首先要引入一個meta標簽。(禁止用戶縮放)

1 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> 

 我們在剛開始接觸移動端的時候,可能都會遇到這種情況:

PS中量取像素和web中手機預覽的大小不太一樣,似乎感覺web預覽效果上要比UI設計圖上的尺寸大。

這是因為手機顯示像素與我們用ps量取的像素有一定的比例!

在2010年,iPhone4發布會中,蘋果推出了“Retina”高清視網膜顯示屏。用易懂的白話來說就是能在1個像素單位里面顯示4個像素,也就是說如果你在ps中量取了一個1px寬,1px高的盒子,那么它在手機上就會顯示出看起來2px寬,2px高盒子的樣子。如果想和設計圖相吻合,那就必須在量取的基礎上除以2。

 市場上手機型號太多,屏幕大小也各自不同,所以要通過便於維護而且實際適用的方式來開發頁面。

1. 響應式布局 and 媒體查詢  

響應式布局:根據當前不同設備,響應不同代碼。

媒體查詢:對設備提出詢問開始,如表達式結果為真,媒體查詢中的css被應用,如為假,則忽略。

1 @media all and (max-width:1040px) and (min-width:768px){
2             div{width:31%;}
3         }
4 @media all and (max-width:767px) and (min-width:450px){
5             div{width:45%;}
6         }
7 @media all and (max-width:449px){
8             div{width:90%;}
9         }

其中,all代表所有設備。如果and后括號里為orientation:portrait,代表豎屏;為orientation:landscape,代表橫屏

2. rem布局  

 所謂rem布局,就是結合媒體查詢,隨着設備的改變更改html的font-size值。

 設備像素比(DPR)= 物理像素(PS中量取的) /  邏輯像素(手機所顯示的)

設備型號 設計圖尺寸 DPR
iPhone4/4s 640px 2
iPhone6/7/8 750px 2
iPhone6/7/8P 1080px 3

 

 

 

 

 

window.devicePixelRatio是設備上物理像素和設備獨立像素(device-independent pixels (dips))的比例。

以iphone4為例,設計圖為640px,那么我們就應將手機寬度設置為640/2 = 320px。如果一個div量取的寬度為10px,那么相應的在手機中的css寬度就應該設置為10 / 2 = 5px。

如果,html的font-size值為16px,那么 1rem = 16px;

3. vw布局  

vw 當前設備屏幕寬度1/100響應式的值。

vh 當前設備屏幕高度1/100響應式的值。

vmin  vw和vh中較小的

vmax   vw和vh中較大的

100vw = 視口width的100%;   100vh = 視口height的100%。

注意:當出現垂直滾動條時,100vw≠width:100%; 100vw包含滾動條,width:100%不包含。

vw和rem相結合

為了方便計算,可以將html的font-size值設置為100px,但是100px是一個固定值,沒有辦法隨着設備的改變而改變。下面用vw來解決html的font-size問題。

第一種情況:

UI設計圖為750px =>  dpr為2  =>  適配核心設備375px  =>  100vw = 375px  =>  1vw =  3.75px  =>  100px = 26.67vw 。

所以=>  html{font-size:26.67vw};

如果量取一個盒子寬度為100px。那么css中就應該設置為0.5rem (100px / 2 = 50px,50px / 100 = 0.5rem)。.

第二種情況:

UI設計圖為640px =>  dpr為2  =>  適配核心設備320px  =>  100vw = 320px  =>  1vw =  3.20px  =>  100px = 31.25vw 。

所以=>  html{font-size:31.25vw};

如果量取一個盒子寬度為100px。那么css中就應該設置為0.5rem (100px / 2 = 50px,50px / 100 = 0.5rem)。

第...種情況:依次類推......

4. 網易適配  

由於存在一種比例關系=>設計稿寬度  : 設備寬度  =  設計稿中元素寬度   : 設備中元素的寬度

得出  設備中元素寬度  = 設計稿中元素寬度 * 設備寬度  /  設計稿寬度

由於1rem = 根元素html 的font-size值。為了方便計算,給“公式中”設計稿元素寬度固定為100。那么每次量取元素時除以100,添加rem單位,即為設備中元素像素值

設計稿寬度為750px,設備寬度為375,一div寬度為36px。

1.html的font-size設置為  100 * 設備寬度(375)  /  設計稿寬度(750)

2.設備div寬度  =   設計稿中div寬度(36) * 設備寬度(375)  /  設計稿寬度(750)

3.由於單位為rem,所以量取時除以100,添加rem單位。width:0.36rem

(36/100)rem   =   (36/100)  *  ((100 * 375) / 750)   =  36  *  375  /  750   =  18px

轉換為vw方法  =>

1 font-size: calc(100vw/7.5);
2 font-size: -webkit-calc(100vw/7.5);


免責聲明!

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



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