移動(dòng)端web開(kāi)發(fā)PX單位問(wèn)題

在頁(yè)面開(kāi)發(fā)過(guò)程中衔彻,對(duì)于設(shè)計(jì)給的設(shè)計(jì)稿薇宠,一般的PC頁(yè)面開(kāi)發(fā)的時(shí)候,很簡(jiǎn)單艰额,使用px為單位澄港,給多少px就標(biāo)注多少。但是到了移動(dòng)端的web開(kāi)發(fā)柄沮,一般標(biāo)注的單位是dp回梧,這對(duì)于css里面px單位就需要轉(zhuǎn)換一下了,這邊簡(jiǎn)單說(shuō)明一下相關(guān)點(diǎn)祖搓。

幾個(gè)概念

設(shè)備像素

設(shè)備像素狱意,也叫物理像素,先來(lái)看看很多資料上面的描述

它是物理概念拯欧,指的是設(shè)備中使用的物理像素(Physic pixel)详囤。這個(gè)單位用px表示,它是一個(gè)[相對(duì)絕對(duì)單位]镐作,即在同樣一個(gè)設(shè)備上纬纪,每1個(gè)設(shè)備像素所代表的物理長(zhǎng)度(如英寸)是固定不變的(即設(shè)備像素的絕對(duì)性); 但在不同的設(shè)備之間,每1個(gè)設(shè)備像素所代表的物理長(zhǎng)度(如英寸)是可以變化的(即設(shè)備像素的相對(duì)性);

設(shè)備像素就是這個(gè)設(shè)備上總共有多少個(gè)這樣的單位像素

CSS像素(設(shè)備獨(dú)立像素)

這個(gè)也是一個(gè)相對(duì)單位,所以它在一個(gè)設(shè)備中具體表現(xiàn)為多少不確定,除受到設(shè)備寬度影響外還有以下兩點(diǎn)可以影響它滑肉。

  • 屏幕布局視口大小
  • 屏幕的分辨率
    而我們?cè)谡鎸?shí)編碼過(guò)程中使用的就是這個(gè)CSS像素包各,下面說(shuō)一下CSS像素和設(shè)備像素的關(guān)系


    物理像素和CSS像素的關(guān)系

    可見(jiàn),在兩塊不同的屏幕上面靶庙,相同的CSS像素问畅,其展示效果一直,大小相等,但是其底層的物理像素點(diǎn)的個(gè)數(shù)會(huì)有較大的區(qū)別护姆。

DPR(設(shè)備像素比)

關(guān)于這個(gè)值矾端,我們有如下公式
DPR = 物理像素點(diǎn)的個(gè)數(shù)/CSS像素點(diǎn)的個(gè)數(shù)
舉例:
若DPR=3,則1CSS像素點(diǎn)等于3物理像素點(diǎn)卵皂,具體效果見(jiàn)上圖秩铆。
那我們?nèi)绾潍@取一臺(tái)手機(jī)的DPR呢,在js里面灯变,可以通過(guò)window.devicePixelRatio來(lái)獲取該值殴玛,而我們知道,screen.width可以獲取屏幕的寬度

<html>
<div id="id1"></div>
<div id="id2"></div>
<script>
document.querySelector("#id1").innerHTML=screen.width;
document.querySelector("#id2").innerHTML=window.devicePixelRatio;
</script>
</html>

在華為手機(jī)(1080*1920)上面顯示的話添祸,就是360和3滚粟,可見(jiàn)公式是OK的,1080/360=3

DP(密度無(wú)關(guān)像素 )

一般這個(gè)單位多見(jiàn)于android上面的布局刃泌,其作用是為了保證在不同設(shè)備上面同樣頁(yè)面的顯示凡壤,官網(wǎng)說(shuō)明如下

在定義 UI 布局時(shí)應(yīng)使用的虛擬像素單位,用于以密度無(wú)關(guān)方式表示布局維度 或位置耙替。
密度無(wú)關(guān)像素等于 160 dpi 屏幕上的一個(gè)物理像素亚侠,這是 系統(tǒng)為“中”密度屏幕假設(shè)的基線密度。在運(yùn)行時(shí)俗扇,系統(tǒng) 根據(jù)使用中屏幕的實(shí)際密度按需要以透明方式處理 dp 單位的任何縮放 盖奈。dp 單位轉(zhuǎn)換為屏幕像素很簡(jiǎn)單: px = dp * (dpi / 160)。 例如狐援,在 240 dpi 屏幕上钢坦,1 dp 等于 1.5 物理像素。在定義應(yīng)用的 UI 時(shí)應(yīng)始終使用 dp 單位 啥酱,以確保在不同密度的屏幕上正常顯示 UI

上面dpi為屏幕密度爹凹,Dots Per Inch(每英寸點(diǎn)數(shù))


dpi計(jì)算公式

其中w為屏幕寬度,單位px镶殷,h為屏幕高度禾酱,s為屏幕尺寸,單位英寸
DP的存在绘趋,就是為了解決android機(jī)型的不同分辨率問(wèn)題颤陶,在不同的手機(jī)上面,dp和px有如下轉(zhuǎn)換關(guān)系


px與dp轉(zhuǎn)換公式

上圖是px和dp的轉(zhuǎn)換關(guān)系陷遮,其中px指的是物理像素

DP和CSS像素轉(zhuǎn)換

關(guān)于DPR滓走,大致有如下的一個(gè)關(guān)系

DPR = 設(shè)備像素/CSS像素 = 設(shè)備像素 / 設(shè)備獨(dú)立像素 ~= DPI/160
一般我們需要獲取如下幾個(gè)數(shù)據(jù)

  • 手機(jī)屏幕物理寬度(devicePxWidth),如1080px
  • 設(shè)備像素比帽馋,即window.devicePixelRatio的值搅方,如3
  • 屏幕對(duì)應(yīng)的dp寬度(deviceDpWidth)比吭,例如360dp

獲取這3個(gè)值之后就比較簡(jiǎn)單了,以上面的數(shù)值為例姨涡,我們得知在該款手機(jī)上面衩藤,1dp=3px(物理像素),3px(物理像素)=1px(css像素)涛漂,即1dp=1px(css像素)赏表。

cssPx=dp*(devicePxWidth/deviceDpWidth/devicePixelRatio)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匈仗,隨后出現(xiàn)的幾起案子瓢剿,更是在濱河造成了極大的恐慌,老刑警劉巖锚沸,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異涕癣,居然都是意外死亡哗蜈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)坠韩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)距潘,“玉大人,你說(shuō)我怎么就攤上這事只搁∫舯龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵氢惋,是天一觀的道長(zhǎng)洞翩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)焰望,這世上最難降的妖魔是什么骚亿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮熊赖,結(jié)果婚禮上来屠,老公的妹妹穿的比我還像新娘。我一直安慰自己震鹉,他們只是感情好俱笛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著传趾,像睡著了一般迎膜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浆兰,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天星虹,我揣著相機(jī)與錄音零抬,去河邊找鬼。 笑死宽涌,一個(gè)胖子當(dāng)著我的面吹牛平夜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卸亮,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忽妒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兼贸?” 一聲冷哼從身側(cè)響起段直,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溶诞,沒(méi)想到半個(gè)月后鸯檬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡螺垢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年喧务,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枉圃。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡功茴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孽亲,到底是詐尸還是另有隱情坎穿,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布返劲,位于F島的核電站玲昧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏篮绿。R本人自食惡果不足惜酌呆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搔耕。 院中可真熱鬧隙袁,春花似錦、人聲如沸弃榨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鲸睛。三九已至娜饵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間官辈,已是汗流浹背箱舞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工遍坟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晴股。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓愿伴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親电湘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隔节,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 剛開(kāi)始做移動(dòng)端web開(kāi)發(fā)的同學(xué)應(yīng)該都碰到過(guò)頁(yè)面適配問(wèn)題,為什么我在開(kāi)發(fā)手機(jī)上調(diào)試好的頁(yè)面在其他手機(jī)會(huì)有這樣或那樣的...
    留七七閱讀 19,356評(píng)論 5 80
  • 前言 移動(dòng)設(shè)備越來(lái)越普及啦寂呛,所以我們不能只停留在開(kāi)發(fā)PC端頁(yè)面怎诫,和一包一起來(lái)學(xué)學(xué)移動(dòng)端Web開(kāi)發(fā)吧~ 移動(dòng)開(kāi)發(fā)特點(diǎn)...
    一包閱讀 598評(píng)論 0 1
  • title: 移動(dòng)端Web頁(yè)面適配淺析date: 2018-01-31 16:38:01tags: 移動(dòng)端 適配 ...
    豆板兒閱讀 12,275評(píng)論 0 16
  • 不知道故事是怎么開(kāi)始的,但是清楚地記得故事是怎樣結(jié)束的贷痪。 故事的開(kāi)始幻妓,大概是因?yàn)槟愣嗲橛譁厝岬哪抗猓B我睡夢(mèng)中也難...
    折悠閱讀 132評(píng)論 0 0
  • 微醺中劫拢,到家肉津,姐夫的生日小酌一杯,不勝酒力尚镰。風(fēng)肆意的在窗外徘徊阀圾,偷閑的時(shí)光哪廓,匆匆而美好狗唉。我喜歡懷念,那逝去的歡...
    那些年聆聽(tīng)的閱讀 161評(píng)論 0 0