「移動端」Web頁面適配


一、什么是移動端適配

移動端 Web 頁面,就是常說的手機 h5頁面、webview頁面、公眾號開發的網頁等。

由於手機機型較多,各個手機的屏幕尺寸不一樣,所以做移動端頁面,需要考慮在安卓和ios的各種尺寸設備的兼容問題,我們要做的 web 頁面適配,就是為了在不同設備上,頁面能夠保持統一展示效果,或等比縮放。

二、移動適配方案

常見的移動適配方案有以下幾種:

  • viewport
  • 盒模型
  • flex
  • rem

2.1、viewport - 可視區

最初手機端需要照顧 PC 端,如果不設置 viewport,直接訪問網頁的時候,我們發現網頁內容看着很小,這是因為頁面按照PC端最小寬度980展示的,也就是我們的網頁寬度就是980,而手機屏幕寬度通常375、411、320、414等,沒有980那么大,所以頁面被縮小了很多。

設置viewport

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

 

分別對 meta 的各個屬性介紹如下:

  • width - 設置viewport的寬度,為一個正整數,或字符串‘device-width’
  • initial-scale - 設置頁面的初始縮放值,是一個數字,可以是小數
  • maximum-sacle - 設置頁面最大縮放值,是一個數字,可以是小數
  • user-scalable - 是否允許用戶進行縮放,值為'yes'或者'no',yes表示可縮放,no表示禁止縮放
  • minimum-scale - 允許用戶縮放的最小值,是一個數字,可以是小數
  • height - 設置layout viewport的高度,這個屬性很少使用

一般情況下禁止用戶縮放網頁,設置的時候只需要:

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

就可以了,但是由於某些瀏覽器不能識別 initial-scale,所以添加了最大和最小縮放限制。

viewport 設置可視區之后,就會把網頁的寬度設置為移動設備的屏幕寬度。

如想深入學習,可查閱《viewport深入理解和使用 - 前端人 - 博客園》。

2.2、盒模型

CSS3 中新增 box-sizing 屬性,可以設置盒模型類型。屬性值分別為:

content-box - 標准模型

border-box - IE模型

兩者最大區別就是盒子的寬度不同:

標准模型寬 = 內容寬 + padding + border

IE模型寬 = 內容寬(包含padding、border)

這樣做的優點就是可以任意設置它的 padding 和 border,不會擠壓盒子的排列,但是如果設置一個 margin,會立馬改變盒子的排列。

如想深入了解,可查閱《前端面試題中的“盒模型”是什么?》

2.3、flex - 彈性布局

Flex 是 Flex Box 的簡寫,意為彈性布局,為盒子提供最大的靈活性。任何一個元素都可以指定為彈性布局。

使用語法:

.box{ display:-webkit-flex; display:flex; }

采用 flex 布局的,也稱 flex 容器,對應的屬性有:

  • flex-direction 設置排列方向(向下、向上、向左、向右)的
  • flex-wrap 內容放置不下時換行方式
  • flex-flow 是flex-direction和flex-wrap屬性簡寫默認值row nowrap
  • justify-content 定義在主軸上的對齊方式。
  • align-items 定義項目在交叉軸上如何對齊。
  • align-content 定義多根軸線的對齊方式

容器內的子元素增加,布局所占的系數:如:

<div class="box">
 <div class="child"></div>
 <div class="child"></div>
 <div class="child"></div>
</div>
//其樣式為
.box{
 display:-webkit-flex;
 display:flex;
}
.child{
    flex:1;
  background:#eee;
 height:100px;
 border:solid 1px red;
}

 

此時我們給 child 不論如何設置邊框、內邊距,還有外邊距,三個 child 始終排列在一行。

flex 布局優點:

  • 可以實現 border-box 的效果。
  • 添加彈性布局之后,元素不需要再使用浮動,清除浮動等。
  • 同行元素設置邊框、內外邊距均不影響同行排列。
  • 還可使用 max-width、min-width 或固定寬度與 flex 配合使用,另一邊可自動填充功能。

不設置其他屬性的時候,彈性布局默認水平方向從左排列,還可以通過屬性控制垂直方向布局,對齊方式等,可以點擊《flex布局制作自適應網頁 - 前端人 - 博客園》詳細學習。彈性布局超強大,應用也非常廣泛。

2.4、rem

rem是一種相對單位。長度單位可分為兩種:相對單位和絕對單位。

絕對單位:長度是固定的值,反應物理真實尺寸。如:px像素,一個像素相當於我們屏幕的一個小點,屏幕實際就是由很多個像素點組成的,不同顯示器像素大小不同。還有cm、mm、in等等。

相對單位:根據其參考物決定的,參照物大小改變時,它也會改變。如%、rem、em、vh、ex等等。

網頁布局中我們常用到em和rem兩種單位:

em - 是相對於自身的

rem - 是root em,相對於根元素的

em和rem 修改他們自身和html的font-size大小,會改變em、rem單位大小。

特點:使用rem布局時,只需要通過寬度改變html的font-size,就可以改變所有元素大小。注意的是,所有設置大小的時候都要使用rem。

 


免責聲明!

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



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