uni-app
支持的通用 css 單位包括 px、rpx
- px 即屏幕像素
- rpx 即響應式px,一種根據屏幕寬度自適應的動態單位。以750寬的屏幕為基准,750rpx恰好為屏幕寬度。屏幕變寬,rpx 實際顯示效果會等比放大。
vue頁面支持普通H5單位,但在nvue里不支持:
- rem 默認根字體大小為 屏幕寬度/20(微信小程序、頭條小程序、App、H5)
- vh viewpoint height,視窗高度,1vh等於視窗高度的1%
- vw viewpoint width,視窗寬度,1vw等於視窗寬度的1%
nvue還不支持百分比單位。
App端,在 pages.json 里的 titleNView 或頁面里寫的 plus api 中涉及的單位,只支持 px。注意此時不支持 rpx
nvue中,uni-app 模式(nvue 不同編譯模式介紹)可以使用 px 、rpx,表現與 vue 中一致。weex 模式目前遵循weex的單位,它的單位比較特殊:
- px:,以750寬的屏幕為基准動態計算的長度單位,與 vue 頁面中的 rpx 理念相同。(一定要注意 weex 模式的 px,和 vue 里的 px 邏輯不一樣。)
- wx:與設備屏幕寬度無關的長度單位,與 vue 頁面中的 px 理念相同
下面對 rpx
詳細說明:
設計師在提供設計圖時,一般只提供一個分辨率的圖。
嚴格按設計圖標注的 px 做開發,在不同寬度的手機上界面很容易變形。
而且主要是寬度變形。高度一般因為有滾動條,不容易出問題。由此,引發了較強的動態寬度單位需求。
微信小程序設計了 rpx 解決這個問題,uni-app
在 App 端、H5 端都支持了 rpx
。
rpx 是相對於基准寬度的單位,可以根據屏幕寬度進行自適應。uni-app
規定屏幕基准寬度 750rpx。
開發者可以通過設計稿基准寬度計算頁面元素 rpx 值,設計稿 1px 與框架樣式 1rpx 轉換公式如下:
設計稿 1px / 設計稿基准寬度 = 框架樣式 1rpx / 750rpx
換言之,頁面元素寬度在 uni-app
中的寬度計算公式:
750 * 元素在設計稿中的寬度 / 設計稿基准寬度
舉例說明:
- 若設計稿寬度為 750px,元素 A 在設計稿上的寬度為 100px,那么元素 A 在
uni-app
里面的寬度應該設為:750 * 100 / 750
,結果為:100rpx。 - 若設計稿寬度為 640px,元素 A 在設計稿上的寬度為 100px,那么元素 A 在
uni-app
里面的寬度應該設為:750 * 100 / 640
,結果為:117rpx。 - 若設計稿寬度為 375px,元素 B 在設計稿上的寬度為 200px,那么元素 B 在
uni-app
里面的寬度應該設為:750 * 200 / 375
,結果為:400rpx。
Tips
- 注意 rpx 是和寬度相關的單位,屏幕越寬,該值實際像素越大。如不想根據屏幕寬度縮放,則應該使用 px 單位。
- 如果開發者在字體或高度中也使用了 rpx ,那么需注意這樣的寫法意味着隨着屏幕變寬,字體會變大、高度會變大。如果你需要固定高度,則應該使用 px 。
- rpx不支持動態橫豎屏切換計算,使用rpx建議鎖定屏幕方向
- 設計師可以用 iPhone6 作為視覺稿的標准。
- 如果設計稿不是750px,HBuilderX提供了自動換算的工具,詳見:https://ask.dcloud.net.cn/article/35445。
- App端,在 pages.json 里的 titleNView 或頁面里寫的 plus api 中涉及的單位,只支持 px,不支持 rpx。
- 早期 uni-app 提供了 upx ,目前已經推薦統一改為 rpx 了,詳見