【微信小程序】——rpx、px、rem等尺寸間關系淺析


最近開發微信小程序,在寫樣式表的時候發現用PX的效果不太理想,而官方文檔用rpx來做響應式布局單位,就仔細研究了下,在此做個小總結:

這里先引用官方定義的尺寸單位‘rpx’:可以根據屏幕寬度進行自適應。規定屏幕寬為750rpx。如在 iPhone6 上,屏幕寬度為375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

看不懂?沒關系,我們接着往下看....

日常開發中,我們常用rem、em來做響應式布局的像素單位,他們都是相對單位。rem相對於文檔的根元素,em相對於父元素。

那么問題來了,rpx到底是個啥?又該如何理解“750rpx = 375px = 750物理像素”這句話呢?

開始之前,我們先扯一扯像素、物理長度、設備獨立像素、設備獨立像素比都是些啥?

【像素】:它不是自然界的物理長度,指基本原色素及其灰度的基本編碼。

【物理像素】:它是顯示器(電腦、手機屏幕)最小的物理顯示單位,每個物理像素由顏色值和亮度值組成。是不是有點眼熟?我們要記住物理像素指的是顯示器上最小的點。

【設備獨立像素】:它又稱密度無關像素,划重點——密度無關,是計算機程序實際處理的虛擬像素(如css的px),由相關關系轉化為設備像素。這個相關關系就是指下面要介紹的——設備像素比

【設備像素比】:設備像素比 = 物理像素 / 設備獨立像素,單位是dpr!

以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。

 

完......

 


免責聲明!

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



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