美文网首页
移动端像素问题

移动端像素问题

作者: 野蛮生长_ed2e | 来源:发表于2019-05-14 21:10 被阅读0次

1.物理像素:物理像素是手机上最小物理显示单元

2.设备独立像素:设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),然后由相关系统转换为物理像素。

3.设备像素比:设备像素比简称为dpr,其定义了物理像素和设备独立像素的对应关系。它的值可以按下面的公式计算得到:

设备像素比 = 物理像素 / 设备独立像素

在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素。通常所说的二倍屏(retina)的dpr是2, 三倍屏是3。

设备宽高为375×667,可以理解为设备独立像素(或css像素)。
dpr为2,根据上面的计算公式,其物理像素就应该×2,为750×1334。


一张图表示

在不同的屏幕上(普通屏幕 vs retina屏幕),css像素所呈现的大小(物理尺寸)是一致的,不同的是1个css像素所对应的物理像素个数是不一致的。

在普通屏幕下,1个css像素 对应 1个物理像素(1:1)。
在retina 屏幕下,1个css像素对应 4个物理像素(1:4)。

RN长宽单位默认对应DP:所谓与密度无关就是密度变化不引起物理尺寸的变化,这一点DP与RN官方说的一致.

现在想想,也就是说1DP在物理尺寸上不管屏幕的分辨率怎么变化,它的物理尺寸是固定不变的是核心

脑海里想象我的电脑是一个手机屏幕,我把分辨率调高了,也就是屏幕密度变大了,物理尺寸没有变,那么一个像素代表的物理尺寸也就小了,1DP要保持它的物理尺寸不变化,那么就要转化成更多的像素点
在React Native 中 PixelRatio.get() 是获取屏幕密度的.

80 dpi 上 PixelRatio.get()=0.5 1dp=0.5px
160 dpi 上 PixelRatio.get()=1 1dp=1px

320dpi 上PixelRatio.get()=2 1dp=2px

从上面的规律分析得出 react native 中 1px=1dp/屏幕密度 而屏幕密度=PixelRatio.get()
所以 1px=1dp/PixelRatio.get()
px:逻辑像素,一般为浏览器使用的单位
dp,pt:物理像素,与设备无关
dpr:像素比,

1.自适应屏幕的大小方法,自适应不同屏幕:

//375是默认iphone6二倍屏设计稿(除以像素密度之后的设备独立像素)
function(size) {
   return Math.round((size/375)*屏幕宽);
}

2. 一般用于1px线条等细小的样式,适配不同分辨率:

const dpi = PixelRatio.get();
function(size) {
  return size/dpi
}

相关文章

  • 移动端1像素的问题

    移动端1像素的问题 问题:一般在移动端,由于dpr(设备像素比)不为1,在PC端显示1像素的边框,在移动端其实显示...

  • 移动端像素问题

    1.物理像素:物理像素是手机上最小物理显示单元 2.设备独立像素:设备独立像素(也叫密度无关像素),可以认为是计算...

  • 手机1px(下划线、上划线、边框)

    手机一像素问题 工作中我们会遇到很多移动端边框1像素的需求,这里为大家准备一份1像素的样式整理。 移动端1px变粗...

  • 面试题

    @1: 移动端1px问题,为什么会有?如何解决? 物理像素:移动设备出厂时,不同设备自带的不同像素,也称硬件像素...

  • PC前端转移动前端的二三事——移动端适配

    一、首先,要搞明白移动端适配问题,就要先搞明白像素和视口 像素包含2种像素:物理像素和css像素 物理像素又称设备...

  • 一像素边框实现

    下文部分引用于移动端1像素边框问题,这篇文章写得很详细,值得一看。 为什么移动端一像素边框和pc端不一样? 其实这...

  • 移动端像素

    移动端设备屏幕尺寸非常多,碎片化严重。尤其是Android,你会听到很多种分辨率:480x800, 480x854...

  • 移动端1像素边框问题

    1像素在一般屏下呈现往往没有问题,但在retina屏下则呈现比较宽,肉眼看上去不像是一像素,为了解决这个问题可以用...

  • 移动端1像素边框问题

      对于前端开发者来说,要处理这个问题,必须先补充一个知识点,就是设备的 物理像素[设备像素] & 逻辑像素[CS...

  • 移动端1像素边框问题

    移动端1像素边框问题: 设置一个div的底部边框为 1px solid #000; 实际表现却是边框线是模糊的,或...

网友评论

      本文标题:移动端像素问题

      本文链接:https://www.haomeiwen.com/subject/eyvphqtx.html