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

相关文章
相关标签/搜索