移動端web app自適應布局探索與總結

2022-03-17 03:44:21 字數 3854 閱讀 6609

要掌握的知識點:

iphone6 螢幕尺寸為 375*667 (pt)也就是 網頁 全屏顯示時候 document.documentelement.clientwidth------可以理解為螢幕越大這個值越大(但是畫素不一定高)

dpr(裝置獨立畫素):2.0   可用(window.devicepixelratio)得出 (------------畫素越高 或者螢幕越小-------dpr越大)

window.devicepixelratio = 物理畫素 / dips

螢幕解析度為 750*1334   (px)  ppi:326

對比 sony z2  螢幕尺寸為327*580

dpr(裝置獨立畫素):3.333

在android中,規定以160dpi為基準,1dp=1px。如果密度是320dpi,則1dp=2px,以此類推

思考:有個常見的現象,就是 pc端 一般字型 設定為12px 為正常字型 可以看清楚,但是把這個網頁放到手機端遊覽 字型就會變得很小,為什麼?

因為pc端dpr 一般都是1,所以當設定為12px時是 真正的12px,

而 手機端 現在大部分都是高畫質螢幕

例如, iphone6 dpr=2 那麼 pc上12px大小的字型,放到iphone6上就會被縮小兩倍,

sony z2  dpr=3.3 所以pc上12px大小的字型,放到z2上就會被縮小3.33倍,

有 dpr=1 的手機嗎?

有!在舉例 iphone 3gs

iphone 3gs 螢幕尺寸為 320*480  解析度  480*320px  dpr=1

iphone  4  螢幕尺寸為 320*480  解析度  960*640px  dpr =2

也就是說:pc上12px的字,在iphone3gs 上可以看清,且同pc上字型大小一樣,

pc上12px的字,在iphone4 上會縮小兩倍,也就是說pc上12px大小的字  在 iphone4上同樣大小 得寫24px才行(實際不用,請看下文)

有乙個div style='多少 px『  放到iphone4上 會是寬度全屏 是320px? 還是 640px?

答案是 640px,

width=device-width,initial-scale=1,maximum-scale=1, minimum-scale=1">
以上這段做移動端時候都會貼上進去,(上面討論的字看不清的情況就不存在了)為什麼

device-width的計算公式為:裝置的物理解析度/(devicepixelratio * scale)------可以理解為 device-width 為手機的螢幕大小

那這時候有乙個div style='多少 px『  放到iphone4上 會是寬度全屏 是320px? 還是 640px?

答案是 320px

那麼此時可以總結前端設計工作流(網易做法)

1設計師 按照iphone6  畫素  設計    750px  *1334    px

2 前端    

0)
width=device-width,initial-scale=1,maximum-scale=1, minimum-scale=1">
注意:上面這句不加的時候  iphone6的  document.documentelement.clientwidth=980####上面這句加上的時候  iphone6的  document.documentelement.clientwidth=375

注意:上面這句不加的時候  iphone6的  document.documentelement.clientwidth=980####上面這句加上的時候  iphone6的  document.documentelement.clientwidth=375
注意:上面這句不加的時候  iphone6的  document.documentelement.clientwidth=980####上面這句加上的時候  iphone6的  document.documentelement.clientwidth=375
1)便於計算

html

2)那麼這個時候想要讓寬度全屏只需設定body7.5rem
body

3)動態改變html的font-size

得出結論: iphone6的時候 html的 font-size 為50px ( 375/7.5 +'px' = 50 px. )

body的 寬度為 7.5*50 = 375px 所以全屏了就

)

同理sony z2 (加上viewport後)

document.documentelement.clientwidth = 360 #### 不加的話為document.documentelement.clientwidth = 980

得出結論: sony z2 的時候 html的 font-size 為50px  ( 360/7.5  +'px' = 48 px. )

body的 寬度為 7.5*48 = 360px 所以全屏了就

為什麼 兩個手機 在不加viewport 時候document.documentelement.clientwidth = 980?

因為當初移動裝置興起,想遊覽所有網頁 包括pc端的網頁,那這個時候問題來了,由於手機螢幕太小,網頁放置不下,所以出現了視口的概念,並預設為980,這樣相當於 (比如一般pc網頁視口寬度為1024)告訴遊覽器 你把1024寬的網頁 放到另乙個 980寬的是口裡,並且要全部顯示,所以系統會把網頁縮小980/1024 倍。放到980裡,當然真實的手機視口可能都沒有那麼大。比如iphone6 螢幕寬度 只有375 ,為什麼當初視口不定位375? 因為 如果把1024寬的網頁 縮放到375寬的螢幕中 要縮小四倍 才能全部顯示,這樣網頁中的內容基本都會太小 而看不清!!

那麼我手機視口也定為1024呢?這樣倒是不縮放了,網頁和pc端一樣大,但是會出現橫向豎向滾動條太多,遊覽起來費事,所以定為980 是中間的乙個值

總結前端設計工作流(**做法)

舉例
0)iphone 6
width=device-width,initial-scale=0.5,maximum-scale=1, minimum-scale=1">

2document.documentelement.clientwidth =750(不是原來的375)

3    html的  font:size = 75px

4 如果想要body橫向全屏

body

移動端webapp自適應布局

請看這篇 hcysunyang的blog 一篇真正教會你開發移動端頁面的文章 二 width device width 這段 是讓布局視口的尺寸等於理想視口。裝置畫素比 dpr 裝置畫素個數 理想視口畫素個數 device width function doc,win win.addeventlis...

移動端web app自適應布局探索與總結

這樣做的弊端很明顯 做出來的頁面在各種手機端看起來的物理大小 高度 是一樣的,所以在大屏手機會覺得頁面稍小,小屏手機頁面稍大 如果要使高度能更好的適應各種手機螢幕,需要寫太多的 查詢樣式,效率低下 全屏背景跟頁面元素需要耦合時,元素位置的確定尤為困難 可能需要通過百分比去確定元素的橫向位置,但始終會...

移動端自適應布局

一 前言 一般在做移動端過程中,常用的有rem布局 px轉rem工具的使用,本文將針對vue專案介紹一種px轉vw布局的實現方案。本文所用腳手架為vue cli搭建的,如何搭建請看作者的另一篇文章 vue cli3搭建vue專案 二 正文 要想實現px轉vw的自動轉化,需要在專案中自少引入如下4個依...