dpr单位

dpr单位1px dpr 2 dp 这个是不是有问题 结尾的总结 1px dpr 2 dp nbsp 这个是不是有问题 以下这个等式不成立吧 320 568px 2 2 nbsp 1136 6401px dpr 2 dp 是平面上的像素换算 但实际开发当中使用更多的是长度上的换算 1px dpr

1px = dpr^2 * dp 这个是不是有问题?

结尾的总结:

1px = dpr ^2 * dp 是平面上的像素换算,但实际开发当中使用更多的是长度上的换算: 1px = dpr * dp。

所以320px = 640dp 注意这时候320px 是长度不是平面,568px同理 

这个表达的是在CSS里的1px等于多少个设备上的像素,对于iphone5,他的drp=2,那会放大2倍,所以1个csspx会用1*2的平方即4个设备像素来展示(记住X,Y两个方向都是放大2倍的)

用友iUAP马太航:Html 5 屏幕适配解决方案

  摘 要:开发者在开发HTML5应用时必须考虑所有屏幕尺寸和分辨率类型的应用场景,为移动应用做屏幕尺寸和分辨率的适配工作。

  随着移动和HTML5的持续火热,移动市场涌现出了大量基于HTML5开发的移动APP。由于移动市场的高速发展,移动设备的快速更新,使得市场上出现了种类繁多具有各种屏幕尺寸和分辨率的移动设备,开发者在开发HTML5应用时就必须考虑所有屏幕尺寸和分辨率类型的应用场景,为移动应用做屏幕尺寸和分辨率的适配工作。

  想要为移动应用做屏幕适配首先要了解一些概念。物理像素,即屏幕上的最小显示单元;设备独立像素,即由程序使用的虚拟像素(如CSS中的px);设备像素比,设备像素比 = 物理像素 / 设备独立像素,定义了物理像素与设备独立像素间的对应关系,简称dpr(device pixel ratio)。在不同屏幕上,CSS像素呈现的大小(物理尺寸)是一致的,不同的是一个CSS像素对应的物理像素个数是不同的。举例来讲,普通屏幕的每个像素点与CSS中定义的像素点大小相同,但是苹果的retina屏幕一个CSS像素对应4个物理像素。因此,在开发应用时就需要对不同屏幕(高清和非高清)进行区分处理。就一张普通的图片(PNG、JPG、GIF等)来讲,其最小的数据单元称为位图像素。理论上,一个位图像素对应一个物理像素,这样图片才能完美的清晰展示,但是对于高清屏幕(Retina)就会出现位图像素点不够的情况,这样会导致图片模糊。遇到这种情况,通常要准备两张图片,如一张200×300(CSS px),并提供一张400×600的高清图片,这样位像素点就是原来的4倍,在retina屏幕下正好与其物理像素点一一对应,图片自然就清晰了。当然,具体要加载那种图片是有dpr来判断的,在JavaScript中,可以通过window.devicePixelRatio获取到当前设备的dpr,在css中,可以通过-webkit-device-pixel-ratio,-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配。与图片问题类似,高清屏幕还存在一种“失真”的问题,即border:1px问题。对于border:1px在所有屏幕中的物理大小其实是相同的(下图灰色区),但这怎能体现出高清呢?对于retina屏幕来说,一个 CSS像素由4个物理像素组成,因此其最细的线条并不是1px,而是0.5px,如下图红色框。而一般情况下设计师想要的retina下border: 1px,其实就是1物理像素宽,这种更细粒度的划分也带来的视觉上的高清。

  dpr单位

    当然,除了高清上的适配,还存在着屏幕大小上的适配,即页面布局问题。目前解决该问题最好用的方案是使用相对单位(rem),主要工作就是针对不同手机屏幕尺寸和dpr动态的改变根节点html的font-size大小(基准值)。rem=document.documentElement.clientWidth * dpr / 10,乘以dpr是因为页面有可能为了实现1px border缩放1/dpr倍(如果没有,dpr=1),除以10是为了取整,方便计算。可以通过JavaScript来实现,使用公式计算出基准值rem,然后写入样式,代码如下:

  var dpr, rem, scale;

  var docEl = document.documentElement;

  var fontEl = document.createElement(‘style’);

  var metaEl = document.querySelector(‘meta[name=”viewport”]’);

  scale = 1 / dpr;

  dpr = win.devicePixelRatio || 1;

  rem = docEl.clientWidth * dpr / 10;

  // 设置viewport,进行缩放,达到高清效果

  metaEl.setAttribute(‘content’, ‘width=’ + dpr * docEl.clientWidth + ‘,initial-scale=’ + scale + ‘,maximum-scale=’ + scale + ‘, minimum-scale=’ + scale + ‘,user-scalable=no’);

  // 设置data-dpr属性,留作的css hack之用

  docEl.setAttribute(‘data-dpr’, dpr);

  // 动态写入样式

  docEl.firstElementChild.appendChild(fontEl);

  fontEl.innerHTML = ‘html{font-size:’ + rem + ‘px!important;}’;

  // 给js调用的,某一dpr下rem和px之间的转换函数

  window.rem2px = function(v) {

  v = parseFloat(v);

  return v * rem;

  };

  window.px2rem: function(v) {

  v = parseFloat(v);

  return v / rem;

  };

  window.dpr = dpr;

  window.rem = rem;

  那么如何在CSS编码中实现真实布局呢?举例来讲,一个针对iPhone6(rem=375 * 2 / 10 = 75)的高清视觉稿750×1334px,采用上面JS代码方案。如果有一块750×300px的div,用less这样写:

  // 例如: .px2rem(height, 80);rem在iphone6时为75

  .px2rem(@name, @px , @rem){

  @{name}: @px / @rem * 1rem;

  }

  .px2rem(width, 750);

  .px2rem(height, 300);

  转化成HTML就变成了10×4rem,再经过0.5的缩放,在屏幕中的实际现实的是375×150px,这样就动态的生成了div的大小完成了适配过程。

  HTML 5已成为移动发展的趋势,很好的解决屏幕适配问题只是其众多亮点之一,但是它也存在着性能不如原生应用之类的问题,相信随着其不断发展完善,HTML 5未来一定会成为前端的新标准。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223162.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:43
下一篇 2026年3月17日 下午2:43


相关推荐

  • [Intensive Reading]从AlexNet理解卷积神经网络的一般结构

    [Intensive Reading]从AlexNet理解卷积神经网络的一般结构2012年AlexNet在ImageNet大赛上一举夺魁,开启了深度学习的时代,虽然后来大量比AlexNet更快速更准确的卷积神经网络结构相继出现,但是AlexNet作为开创者依旧有着很多值得学习参考的地方,它为后续的CNN甚至是R-CNN等其他网络都定下了基调,所以下面我们将从AlexNet入手,理解卷积神经网络的一般结构。先给出AlexNet的一些参数和结构图:卷积层:5层全连接层…

    2022年6月16日
    34
  • linux中文输入法

    linux中文输入法

    2022年2月4日
    47
  • linux下重启网络服务的命令

    linux下重启网络服务的命令linux 下重启网络服务的命令配网卡的时候 用到了下面的命令重启网络服务的命令是 servicenetwo 或者 etc init d networkresta 在 linux 下更改 ip 后如果没有重启网络服务实际上是不发生变化的

    2026年3月26日
    2
  • 雷达信号处理——雷达系统

    雷达信号处理——雷达系统1 1 工作的基本条件雷达发射机发射电磁波 电磁波在空间中直线传播 遇到障碍物后产生散射 一部分散射后的回波能量能被雷达接收机接收 工作基本条件 1 电磁波在空间中直线传播速度 v 3 10 8m s 2 电磁波具有二次散射性 3 电磁波的定向传播性 4 目标径向运动时回波带多普勒频移 雷达测量目标的距离公式 是目标回波到达时间相比发射时间的时延 c 是电磁波传播速度 光速 多普勒频移公式 用回波的多普勒频移可以求出目标速度 1 2 雷达系统的基本组成常见的雷达系统组

    2026年3月26日
    3
  • 十天学会PHP_十天学会php教程

    十天学会PHP_十天学会php教程以前写了十天学会asp,十天学会asp.net什么的,现在想想再写个php吧,也算比较全了。PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以Apachew

    2022年8月2日
    7
  • IDEA/Pycharm的config目录以及插件的安装位置在哪里?

    IDEA/Pycharm的config目录以及插件的安装位置在哪里?文章目录在 2020 版前在 2020 版后在 2020 版前通过 IDEA properties 文件可知 config 目录 system 目录 插件安装目录都在用户目录下插件安装目录就在 config 目录下 在 2020 版后把 pycharm 和 IDEA 的 config 等目录都放在了这个路径下面 直接进去 IDEA 的目录 就相当于之前的 config 目录

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号