H5開發(fā)中的單位設(shè)計轉(zhuǎn)換問題分析

引出問題
  • 設(shè)計標一個50px,為什么我們需要除以2后,寫成25px呢?
  • 為什么在移動端開發(fā)過程中,我的紅米手機分辨率達到了2400x1080,但是安裝設(shè)計的750尺寸下寫的像素看起來大小也合適呢驯击,不應(yīng)該會變得很小很小嗎
  • em和rem是用來做什么的?

物理像素和邏輯像素

  • pt: html css中的使用的單位像素px: 實際上指的是邏輯像素pt

  • px: photoshop測量中的但是實際上指的是物理像素, 物理像素即表示的是一個點, 大小固定

  • iphone6中一個單位的邏輯像素包含2個物理像素

  • 瀏覽器上展示的iphone6為375 * 667 實際上指的是邏輯像素為375 * 667

  • 一般移動端的設(shè)計圖紙一般是給的是750*1334, 是因為一個邏輯像素pt包含兩個物理像素px

  • UI設(shè)計師通過ps軟件測量的是物理像素點,我認為就是真實的物理電子點

  • UI 設(shè)計圖紙750*1334自然也是指的是物理像素的概念...

  • UI設(shè)計標注某個控件50px,自然也是物理像素耐亏,轉(zhuǎn)換為邏輯像素就是25px,這就是為什么要除以2的原因

  • 雖然我的紅米2400 * 1080徊都,實際上邏輯分辨率是393*873,所以用iphone6的邏輯分辨率差不多广辰,所以也適用于 iphone6下的邏輯像素大小

  • 在我的紅米下暇矫,雖然我的手機物理分辨率更大,但是一個邏輯像素明顯會對應(yīng)出更多的物理像素择吊,所以不至于按照iphone6寫的邏輯像素變得非常小

  • 以上px寫法只是適合移動端手機

em和rem

  • em是相對長度單位李根。相對于當前對象內(nèi)文本的字體尺寸,如果父節(jié)點
    1.2em,子節(jié)點1.2em,實際就是1.2*1.2了
  • rem是使得em只相當于根節(jié)點的font-size
   <title></title>
    <script>function rem() {var w = document.documentElement.getBoundingClientRect().width;document.querySelector('html').style.fontSize = w * 100 / 750 + 'px'}rem();window.onresize = rem;</script>
  </head>
  <body>
    <div id="root"></div>
    <script>
      })
    </script>
  • 上面的fontSize在iphone6下也就是50px=1rem
@function rem($px) {
    @return $px / 100 + rem
};
  • 這個轉(zhuǎn)換是針對UI設(shè)計師標注的像素轉(zhuǎn)換為rem,UI 標注了例如x個px(物理像素),那么要轉(zhuǎn)換為邏輯像素就是x/2;再轉(zhuǎn)換為rem,就是x/2/50=x/100
    css寫法
.container {
  background: red;
  width: rem(750);
image.png
  • 在750物理像素設(shè)計圖紙下(iphone6)几睛,邏輯像素是375房轿,所以1rem=
    375*100/750;rem(750)=7.5rem=475px
px轉(zhuǎn)換轉(zhuǎn)換為rem
  • 我們平時是按照iphone6來對標的,適合手機所森,對大屏差異比較大(大屏邏輯分辨率查詢百度"我的分辨率"囱持,得出1080*1920),所以用手機的px,看起來自然會比較小
    在大屏上需要通過rem來避免字體過小
  • 安裝依賴
npm install lib-flexible postcss-px2rem-exclude -D

  • confige-override.js增加,適應(yīng)px2rem后焕济,需要注意
  • 1rem始終=37.5px,原來html設(shè)置的沒有用了
  • 注意1px不要轉(zhuǎn)換纷妆,否則可能看不到了,可以把px寫成大寫的PX晴弃,避免轉(zhuǎn)換
  • 注意刪除html的font-size,否則會出現(xiàn)先放大后縮小的異常情況
 addPostcssPlugins([
    require("postcss-import")({}),
    require("postcss-url")({}),
    require("postcss-preset-env")({}), // 可以使用 css 未來的特性 postcss-cssnext 已棄用
    require("postcss-px2rem-exclude")({
      // remUnit 等于 設(shè)計稿寬度  375除以10  37.5
      remUnit: 37.5,//轉(zhuǎn)換時候37.5px轉(zhuǎn)為1rem,1rem=37.5px掩幢,.html的font_size不再是比例
      //remUnit: 50,//轉(zhuǎn)換時候50px轉(zhuǎn)為1rem,1rem還是等于37.5px,.html的font_size不再是比例
      exclude: /node_modules/i
    })
  ]),
  • 入口增加
import "lib-flexible";

  • rem轉(zhuǎn)換修改
    x/2,然后x/2/37.5,于是就是x/75
@function rem($px) {
    @return $px / 75 + rem
};

  • 注意,內(nèi)聯(lián)樣式插件不會自動修改,所以增加方法轉(zhuǎn)換
//傳入的px已經(jīng)是UI給的物理像素/2后的邏輯像素上鞠,37.5個邏輯像素=1rem
export const px2rem = (px: number) => {
  return px/37.5+'rem'
}
  • 如果需要第三方組件也能夠轉(zhuǎn)換际邻,去掉exclude
   exclude: /node_modules/i
參考資料

1.邏輯像素pt和物理像素px
2.px、em旗国、rem區(qū)別介紹
3.React px轉(zhuǎn)rem
3.大屏適配有道筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枯怖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子能曾,更是在濱河造成了極大的恐慌度硝,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寿冕,死亡現(xiàn)場離奇詭異蕊程,居然都是意外死亡,警方通過查閱死者的電腦和手機驼唱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門藻茂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事辨赐∮欧” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵掀序,是天一觀的道長帆焕。 經(jīng)常有香客問我,道長不恭,這世上最難降的妖魔是什么叶雹? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮换吧,結(jié)果婚禮上折晦,老公的妹妹穿的比我還像新娘。我一直安慰自己沾瓦,他們只是感情好满着,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暴拄,像睡著了一般漓滔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乖篷,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天响驴,我揣著相機與錄音,去河邊找鬼撕蔼。 笑死豁鲤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鲸沮。 我是一名探鬼主播琳骡,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼讼溺!你這毒婦竟也來了楣号?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤怒坯,失蹤者是張志新(化名)和其女友劉穎炫狱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剔猿,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡视译,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了归敬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酷含。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡鄙早,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出椅亚,到底是詐尸還是另有隱情限番,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布呀舔,位于F島的核電站扳缕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏别威。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一驴剔、第九天 我趴在偏房一處隱蔽的房頂上張望省古。 院中可真熱鬧,春花似錦丧失、人聲如沸豺妓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琳拭。三九已至,卻和暖如春描验,著一層夾襖步出監(jiān)牢的瞬間白嘁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工膘流, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留絮缅,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓呼股,卻偏偏與公主長得像耕魄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子彭谁,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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