移动端1px问题的一种解决方案

因为retina视网膜屏幕的大量使用,使移动端产生了1px问题。设备像素比由原本的1变为1.5/2甚至是现在的3,都使移动端布局产生了更多的问题。

1. 物理像素和独立像素

大白话讲,一个物理像素就是一个发光的小灯泡;独立像素就是一个正常像素面积的大小,原本来说,一个独立像素只有一个发光的小灯泡,但是,随着苹果推出retina视网膜屏幕,使的原本一个独立像素面积的地方放了更多的小灯泡。

2. 设备像素比

设备像素比=物理像素/独立像素;也就是一个独立独立像素平均放置小灯泡的个数。如果你的iphone设备像素比为2的话,那么在一个独立像素的面积下就放置了两小灯泡。

3.带来的问题

问题就是:当我们在CSS代码里写border:1px;时,它实际上写的是一个物理像素,而在设备像素比为2的设备上,它显示的是2px。那么,如何让它在设备像素比不为1的设备上正常显示1像素呢?

4. 解决方案

这个1px边框的显示,用一个div伪类来代替,再用媒体查询设备像素比的方法,使用transform:scaleY(0.5);来缩放(此处假设设备像素比为2)。

核心代码如下:

@mixin border-1px($color: rgba(7,17,27,0.2)){
  position:relative;
  &:after{
    display:block;
    position:absolute;
    left:0;
    bottom:0;
    content:'';
    width:100%;
    border-top:1px solid $color;
  }
}

以上是伪类的mixin

@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5){
  .border-1px {
    &:after {
      -webkit-transform: scaleY(0.7);
      -moz-transform: scaleY(0.7);
      -ms-transform: scaleY(0.7);
      -o-transform: scaleY(0.7);
      transform: scaleY(0.7);
    }
  }
}

@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2){
  .border-1px {
    &:after {
      -webkit-transform: scaleY(0.5);
      -moz-transform: scaleY(0.5);
      -ms-transform: scaleY(0.5);
      -o-transform: scaleY(0.5);
      transform: scaleY(0.5);
    }
  }
}

@media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){
  .border-1px {
    &:after {
      -webkit-transform: scaleY(0.3);
      -moz-transform: scaleY(0.3);
      -ms-transform: scaleY(0.3);
      -o-transform: scaleY(0.3);
      transform: scaleY(0.3);
    }
  }
}

这是设备像素比媒体查询的代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、meta标签的效果 移动端页面一般会在head头部添加如下meta标签。 该meta标签是否添加对页面渲染的影...
    nimw阅读 3,645评论 0 5
  • 上篇文章 讲到了我对设备像素比的理解,但在写文章的过程中,也一直有一个疑惑的地方:为什么在 Retina 屏下需要...
    柏丘君阅读 7,972评论 1 5
  • 在移动互联网快速发展的今天,手机的种类和尺寸越来越多,作为前端的小伙伴们可能会越来越头疼,但又不得不去适配一款又一...
    keenjaan阅读 26,935评论 9 86
  • 刚开始做移动端web开发的同学应该都碰到过页面适配问题,为什么我在开发手机上调试好的页面在其他手机会有这样或那样的...
    留七七阅读 19,529评论 5 80
  • 从今天开始。 1.制定计划 2.看一些写作套路方法,确定写作风格和类型,可有不止一种 3.按计划定期写稿 4.多读...
    只是一个简单姑娘阅读 134评论 0 0