CSS像素以及移動端不一樣屏幕適配問題

關注 「認真學前端」css

加入咱們一塊兒學習,每天進步前端

本文首發於微信公衆號:認真學前端微信

像素

分辨率

咱們一般所說的顯示器分辨率,實際上是指桌面設定的分辨率,而不是顯示器的物理分辨率。只不過如今液晶顯示器成爲主流,因爲液晶的顯示原理與CRT不一樣,只有在桌面分辨率與物理分辨率一致的狀況下,顯示效果最佳,因此如今咱們的桌面分辨率幾乎老是與顯示器的物理分辨率一致了。

UI稿的像素

UI稿的像素是指物理像素
咱們接到的UI設計稿例如750px就是物理像素

前端像素

只要兩個屏幕邏輯像素相同,它們的顯示效果就是相同的。 也就是CSS世界中的px相同,相同物理尺寸的屏幕顯示效果就是相同的學習

那麼在實際屏幕顯示的時候他們之間都有神馬關係呢?

以下圖 當咱們在網頁上設置一個元素的css像素(width:2px;height:2px)時,在dpr=1的顯示器上時,最終會佔用一個四個物理像素點,當在dpr=2時的顯示器上時,會佔用16個物理像素點。由此得出結論,在不一樣屏幕下css像素的物理尺寸是一致的,不一樣的是一個css像素對應的物理像素點個數不同spa

不一樣屏幕下的rem適配方案

<!-- m站移動端適配js -->設計

// 適配  物理像素寬750 1rem=100px   
  // clientWidth(實際的邏輯像素)/375(參照基準邏輯像素) = fontSize(實際的1rem像素值)/100(參照的1rem邏輯像素值)
  ;(function(win, doc){
    function change(){
        doc.documentElement.style.fontSize=100*doc.documentElement.clientWidth/375+'px';
    }
    change();
    win.addEventListener('resize', change, false);
  })(window, document);
  // 這樣咱們就計算出實際不一樣邏輯像素下1rem的值了
  // 實際工做中若是UI給是設計稿寬度是750px 那麼咱們就須要在量到的寬度的基礎上除以200
  // 咱們在打開控制檯查看元素之間的距離的時候都是設計稿上的一半 設計稿的物理像素2px對應邏輯像素1px
  // 我司如今的設計稿都放在藍湖上 寬度都是標準的375 那麼咱們只須要在量得的寬度基礎上除以100就獲得實際的寬度是多少rem

  // 附: 固然也有其餘適配方案,可是rem原理都是同樣的,除非採用的不是rem方案

爲何蘋果手機上須要2倍圖或者三倍圖?

以2倍屏爲例code

本來2*2像素的圖片在2倍屏下 有4*4個像素點組成 那麼多出來須要繪製的像素點的就會在之前週週附近找類似的,因此有了模糊的問題。如今工做中通常爲了圖片高清顯示,都是採用蘋果兩倍圖。blog

相關文章
相關標籤/搜索