微信小程式 不同的移動裝置上應該如何設定rpx單位?
我們在做微信小程式的開發時,經常會遇到在寫樣式表的時候發現用PX的效果不太理想的情況。日常開發中,我們常用rem、em來做響應式佈局的畫素單位,他們都是相對單位。rem相對於文件的根元素,em相對於父元素。但是在微信小程式的官方文件用rpx來做響應式佈局單位!那什麼是RPX,應該如何設定呢?今天我們就來好好了解一下。
[color=rgb(44,] 開始之前,我們先扯一扯畫素、物理長度、裝置獨立畫素、裝置獨立畫素比都是些啥? 【畫素】:它不是自然界的物理長度,指基本原色素及其灰度的基本編碼。 【物理畫素】:它是顯示器(電腦、手機螢幕)最小的物理顯示單位,每個物理畫素由顏色值和亮度值組成。是不是有點眼熟?我們要記住物理畫素指的是顯示器上最小的點。
【裝置獨立畫素】:它又稱密度無關畫素,劃重點——密度無關,是計算機程式實際處理的虛擬畫素(如css的px),由相關關係轉化為裝置畫素。這個相關關係就是指下面要介紹的——裝置畫素比 【裝置畫素比】:裝置畫素比 = 物理畫素 / 裝置獨立畫素,單位是dpr! 還是沒有看懂?沒有關係,我們從圖片上來看一下移動裝置的解析度和rpx的關係:
以iPhone6為例: 已知,1. 裝置寬高 375 * 667,在這裡我們可以看做是css中的px(密度無關畫素);2. retina螢幕的dpr為2。 求 iPhone6 的物理畫素是多少? 送分題啊,同學們! 根據公式,我們計算出iPhone 6 的物理畫素為 750 * 1334 結論:
在不同的螢幕上(普通螢幕 vs retina螢幕),css畫素所呈現的大小(物理尺寸)是一致的,不同的是1個css畫素所對應的物理畫素個數是不一致的。 在普通螢幕下,1個css畫素 對應 1個物理畫素(1:1)。 在retina 螢幕下,1個css畫素對應 2*2個物理畫素(1:4)。 【點陣圖畫素】:一個位影象素是柵格影象(如:png, jpg, gif等)最小的資料單元。每一個位影象素都包含著一些自身的顯示資訊(如:顯示位置,顏色值,透明度等)。覺得複雜?你只需要記住1px表示一個圖片最小的點。不信?我們來用PS放大一張圖片,可以看到圖片被拆分成無數個點,但無論你如何放大那些小點,他們都不能再次被拆分了,因為他們已經是畫素級別的點了,已經是最小的了。 理論上,1個位影象素對應於1個物理畫素,圖片才能得到完美清晰的展示。 所以,在寬高375 * 667,dpr為2 的 iPhone 6中完美顯示200*300(css pixel)img標籤,圖片的尺寸應該為多少呢?答案是:400 * 600。 這就是我們針對iPhone 6 的設計稿的尺寸基於 750*1334 來設計的目的了。 回到正題.......rpx是啥? 有了上面的做鋪墊,我們知道了對於iPhone6 來說, 1rpx = 1物理畫素,1rpx = 0.5px; 如果不是iPhone 6 呢? 1rpx = window.innerWidth/750。 1px = 1rpx * dpr。
2.樣式匯入 @import "common.wxss";
3.內聯樣式 //動態樣式
(2)class:用於指定樣式規則,其屬性值是樣式規則中類選擇器名(樣式類名)的集合,樣式類名不需要帶上.,樣式類名之間用空格分隔。 <view class="normal_view" />
4.選擇器
5.全域性樣式與區域性樣式 二:裝置物理畫素(裝置畫素) 裝置邏輯畫素(裝置獨立畫素) 程式碼CSS畫素 裝置畫素比 viewport深入理解
1.viewport(可視區域大小)的概念理解和知識積累 2.移動端的HTML5開發META的常用設定 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
第一個meta標籤表示:強制讓文件的寬度(viewport寬度)與裝置的寬度保持1:1,並且文件最大的寬度比例是1.0,且不允許使用者點選螢幕放大瀏覽; <meta content="width=375, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
initial-scale - 初始的縮放比例 HTML5 META標籤常用設定參考資料點選開啟連結點選開啟連結 點選開啟連結
3.裝置物理畫素(裝置畫素),裝置邏輯畫素(裝置獨立畫素),程式碼CSS畫素,裝置畫素比 裝置邏輯解析度(device independent pixels):人對於物體真實尺寸的認知(螢幕大小),設計使用邏輯畫素來思考介面 程式碼CSS畫素:CSS畫素是Web程式設計的概念,獨立於裝置的用於邏輯上衡量畫素的單位,也就是說我們在做網頁時用到的CSS畫素單位是抽象的,而不是實際存在的
iphone 6為例(裝置畫素比是2):
**案例:**iphone 6s 的物理畫素是750x1334,JS中window.innerWidth就是獲取裝置的物理畫素,為什麼window.innerWidth獲取的值是375而不是750呢?
以iPhone 5s為例,螢幕的解析度是640×1136,倍率是2。瀏覽器會認為螢幕的解析度是320×568,仍然是基準倍率的尺寸。 |