devicePixelRatio

window.devicePixelRatio是设备上物理像素和逻辑像素的比例。
公式表示就是:window.devicePixelRatio = 物理像素 / 逻辑像素

解释

这张图中第一行的「像素」(Points) 就是所谓的「逻辑像素」。

在 iPhone 4 前的时代,逻辑像素和物理像素是一一对应的——即,设计中的一个点对应屏幕硬件上的一个像素点。

iPhone 4 之后,Retina 屏幕出现。在 Retina 屏幕上,使用 4 个硬件上的像素点 (2 x 2) 来表示一个逻辑像素点。
举个例子:
在开发环境中,使用 12 pt 的字体,在非 Retina 屏幕上字面高度为 12 个物理像素点;而同样是 12 pt 的字体,在 Retina (@2x) 屏幕上的字面高度,是 24 个像素点。同样,使用代码来生成的一个 20 pt x 30 pt 尺寸的举行,在非 Retina 屏幕中尺寸为 20 x 30 个物理像素;而在 Retina (@2x) 屏幕上,其尺寸为 40 x 60 个物理像素。在 Retina 屏幕上进行设计,文字尺寸、空间大小等等都应该遵照逻辑像素进行。比如,为 iPhone 4/4s (逻辑像素 320 pt x 480 pt,物理像素 620 px x 960)设计,则界面中各个元素的尺度应当以 320 x 480 为准;在 Retina 屏幕上的「2x」,可以理解为元素的精细度翻了一倍。换言之,多出来的那些像素并不是用来显示更多内容的,而是用来提高这些内容的精细程度的。这样,同样界面在 iPhone 4/4s 和旧设备上的差别,就仅在于画面的精细程度,而非内容的多寡。使用设计软件制作界面元素时尺寸的翻倍,也是为了提高精细度;在开发环境中,仍是按照 @1x 的逻辑来设计界面;如果误用 @2x 的尺度,则会导致文字、控件等过小。

iPhone 6 Plus 的逻辑像素为 414 pt x 736 pt, 而其使用了新一代的 Retina 屏幕 (@3x),换言之,如果按照上述的显示方式,物理像素理应为 1242 px x 2208 px。 从图中 iPhone 6 Plus 的「渲染像素」亦可以看到这一个值。

使用场景

假设你的jsapi中的ui,img布局是基于@1x的逻辑来设计的,那么在后续@2x、@3x的设备展示时就会出现偏小的情况。
解决方案为根据不同的设备加载相应尺寸的设备。即在@2x的设备中尺寸翻倍。

如果没有设计适配逻辑,又想使用默认的@1x的效果,则可以使用:

<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

指明网页宽度采用设备宽度,缩放比例为1。则浏览器会按照你设定的px去显示,而不会缩小至1/2/、1/3。

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;

devicePixelRatio的更多相关文章

  1. 设备像素比devicePixelRatio简单介绍

    本文所说devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持,随着显示器的发展,这个属性也慢慢登上了前端技术的舞台. ...

  2. 深入理解移动web开发之PPI,Pixel,DevicePixelRatio(转)

    如果你是一个开始接触移动Web开发的前端工程师,那么你或许也遇到了和我曾经遇到的过问题:有太多新的概念需要掌握,太多相似的概念需要区分.没关系,我将用两篇文章的篇幅来解决这些问题.上篇文章关于解释和区 ...

  3. 常见手机的设备分辨率、viewport和devicePixelRatio

    常见手机的设备分辨率和viewport分辨率,及其1rem的大小(以vmin为单位) 常见的devicePixelRatio是1, 1.325, 1.5, 2, 2.4, 3.  (具体见下面的表格, ...

  4. web移动端,需要清楚设备像素比devicePixelRatio的应用

    我们这里所说的devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持. 概念 devicePixelRatio ,它是 ...

  5. devicePixelRatio手机图片模糊的原因

    一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的 ...

  6. 转:devicePixelRatio和webkitBackingStorePixelRatio

    转:关于canvas在retina屏下绘制文字或图像模糊的解决方案 一.问题描述 最近在鼓捣canvas的时候,发现绘制在canvas上的文字(或图片)在retina屏幕上会出现显示模糊的问题,感觉很 ...

  7. 移动前端开发之viewport,devicePixelRatio的深入理解

    移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...

  8. Lumia 1520 IE mobile window.devicePixelRatio

    Lumia 1520 IE11 mobile -> window.devicePixelRatio = 2.217964285714286 Lumia 1520 UAP 环境 -> win ...

  9. window.devicePixelRatio ,px,rem

    window属性:devicePixelRatio 设备像素比 https://www.w3cschool.cn/fetch_api/fetch_api-atvq2nma.html devicePix ...

随机推荐

  1. Ubuntu学习笔记-win7&Ubuntu双系统简单搭建系统指南

    win7&Ubuntu双系统简单搭建系统指南 本文是自己老本子折腾Ubuntu的一些记录,主要是搭建了一个能够足够娱乐(不玩游戏)专注练习自己编程能力的内容.只是简单的写了关于系统的安装和一些 ...

  2. java多线程编程(2)交替输出数字和字母

    mark一下,不停的看看notify和wait的没有理解 class Printer { int index=0; //输出奇数 public synchronized void printA(int ...

  3. 在Ubuntu中设置中文输入法

    在Ubuntu中设置中文输入法 */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola,&quo ...

  4. hdu 4432 Sum of divisors(十进制转其他进制)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4432 代码: #include<cstdio> #include<cstring&g ...

  5. 2014 ACM-ICPC Asia Anshan Regional Contest(Online Version)

    题目I - Osu! - HDU 5078 题目分析:最水的一道题吧,求两点间的距离和时间差值的最大比值 #include<stdio.h> #include<math.h> ...

  6. Eclipse Code Template 设置自动加注释(转)

    Eclipse Code Template 设置自动加注释 设置注释模板的入口: Window->Preference->Java->Code Style->Code Temp ...

  7. 如何将位图格式图片文件(.bmp)生成geotiff格式图片?

    一.位图格式信息 位图BITMAPINFOHEADER 与BITMAPFILEHEADER: 先来看BITMAPINFOHEADER,只写几个主要的 biSize包含的是这个结构体的大小(包括颜色表) ...

  8. jstree 节点拖拽保存数据库

    需要jstree具有拖拽功能需要在加载jstree时添加dnd插件,具体看代码: $('**').jstree({ //plugins-各种jstree的插件引入,展示树的多样性 'plugins' ...

  9. lenky的个人站点 ----LINUX 内核进程

    http://www.lenky.info/archives/category/nix%E6%8A%80%E6%9C%AF/%E5%86%85%E6%A0%B8%E6%8A%80%E6%9C%AF

  10. [转] Node.js 服务端实践之 GraphQL 初探

    https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.n88wyan4e 0.问题来了 DT 时代,各种业 ...