移动web开发之像素和DPR详解

原创 2018年02月09日 10:17:50

前话:
  像素在web开发中几乎天天用到,但到底什么是像素,移动端和桌面端的像素有区别吗,缩放对像素有影响吗,视网膜屏幕和像素有什么关系?关于这些问题,可能就不清楚了。本文将介绍关于像素的相关知识
  
什么是像素:
  像素,又称画素,是图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之意,有时亦被称为pel(picture element)
  像素是网页布局的基础。一个像素就是计算机能够显示一种特定颜色的最小区域。当设备尺寸相同但像素变得更密集时,屏幕能显示的画面的过渡更细致,网站看起来更明快。

  //ppi是指屏幕上每英寸可以显示的像素点的数量,即屏幕像素密度
  这里写图片描述

分类:
  实际上像素分为两种:设备像素和CSS像素
    1、设备像素(device independent pixels): 设备屏幕的物理像素,任何设备的物理像素的数量都是固定的
    2、CSS像素(CSS pixels): 又称为逻辑像素,是为web开发者创造的,在CSS和javascript中使用的一个抽象的层
    每一个CSS声明和几乎所有的javascript属性都使用CSS像素,因此实际上从来用不上设备像素 ,唯一的例外是screen.width/height

//我们通过CSS和javascript代码设置的像素都是逻辑像素
width:300px;
font-size:16px;

缩放:
  在桌面端,css的1个像素往往都是对应着电脑屏幕的1个物理像素。
  这里写图片描述
  而在手机端,由于屏幕尺寸的限制,缩放是经常性的操作。
  设备像素(深蓝色背景)、CSS像素(半透明背景)
  下图表示当用户进行缩小操作时,一个设备像素覆盖了多个CSS像素
  这里写图片描述
  下图表示当用户进行放大操作时,一个CSS像素覆盖了多个设备像素
  这里写图片描述
  不论我们进行缩小或放大操作,元素设置的CSS像素(如width:300px)是始终不变的,而一个CSS像素对应多少个设备像素是根据当前的缩放比例来决定的

HTML中的css像素和dpr:
在HTML中不得不提到viewport,经常会设置viewport的width=device-width,那这个device-width的值是多少呢?

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

我们会发现在iphone5下device-width=320,iphone6下是375,iphone6+下是414,那也就是说device-width其实就是NA开发中屏幕宽度有多少pt和dp。

device-width在html中也同样被解读为理想(基准)视口的宽度,即320px,375px,414px,这里的px就是指css像素,通常也被称为逻辑像素;那我们可以认为html中的css像素的显示尺寸应该和NA中的pt、dp的显示尺寸相等。

这里写图片描述

DPR:
  设备像素比DPR(devicePixelRatio)是默认缩放为100%的情况下,设备像素和CSS像素的比值
  dpr,也被成为device pixel ratio,即物理像素与逻辑像素的比,那也就不难理解:iphone6下dpr=2,iphone6+下dpr=3(考虑的是栅格化时的像素,并非真实的物理像素);
  

DPR = 设备像素 / CSS像素(某一方向上)

在早先的移动设备中,并没有DPR的概念。随着技术的发展,移动设备的屏幕像素密度越来越高。从iphone4开始,苹果公司推出了所谓的retina视网膜屏幕。之所以叫做视网膜屏幕,是因为屏幕的PPI(屏幕像素密度)太高,人的视网膜无法分辨出屏幕上的像素点。iphone4的分辨率提高了一倍,但屏幕尺寸却没有变化,这意味着同样大小的屏幕上,像素多了一倍,于是DPR = 2

  实际上,此时的CSS像素对应着以后要提到的理想视口,其对应的javascript属性是screen.width/screen.height

  而对于设备像素比DPR也有对应的javascript属性window.devicePixelRatio

  以iphone8为例,iphone8的CSS像素为375px*677px,DPR是2,所以其设备像素为750px*1354px

  750(px) / 375(px)  = 2
  1354(px) / 677(px) = 2
  750(px)*1354(px) /  375(px)*677(px) = 4
版权声明:本文为博主原创文章,未经博主允许可以随便转载。 https://blog.csdn.net/a419419/article/details/79295799

HTML的dpr

只是为了自己以后查找方便,看不懂勿怪 DPI、PPI:屏幕像素密度或屏幕每英寸的像素数量 dips:手机尺寸或独立像素 物理像素 = 手机分辨率 dpr = window.devicePixe...
  • qq604598861
  • qq604598861
  • 2016-12-27 16:17:40
  • 243

移动web开发之像素和DPR详解

前话:   像素在web开发中几乎天天用到,但到底什么是像素,移动端和桌面端的像素有区别吗,缩放对像素有影响吗,视网膜屏幕和像素有什么关系?关于这些问题,可能就不清楚了。本文将介绍关于像素的相关知识...
  • a419419
  • a419419
  • 2018-02-09 10:17:50
  • 167

移动端 h5开发相关内容总结——CSS篇

1.移动端开发视窗口的添加h5端开发下面这段话是必须配置的其它相关配置内容如下: width viewport 宽度(数值/device-width) height viewport 高度(数值/de...
  • yisuowushinian
  • yisuowushinian
  • 2016-01-06 15:59:15
  • 25595

移动web开发之像素和DPR

定义   像素,又称画素,是图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元...
  • weixin_38521613
  • weixin_38521613
  • 2017-08-04 11:54:13
  • 76

移动web开发之DPR

设备像素比DPR(devicePixelRatio)是默认缩放为100%的情况下,设备像素和CSS像素的比值 DPR = 设备像素 / CSS像素(某一方向上)   在早先的移动设备中...
  • cmyh100
  • cmyh100
  • 2017-08-09 16:05:01
  • 186

前端-<基础>-px,ppi,DPR,解决iphone适配问题

简介最近才真正的懂了什么是px,本着把问题完全想通的态度,从而探索相应的资料。有感而发,记录一下。什么是px?px,全称 pixel,翻译过来就是”像素”的意思,代表屏幕分辨率的单位,ex:1366*...
  • softwarenb
  • softwarenb
  • 2017-07-25 00:20:42
  • 1116

移动端布局、rem布局、手淘团队flexible.js、zoom缩放

记录我的第一篇博客    学习前端有一段时间,看博客一直是自己的学习习惯,今天我也来分享一下,从此以后,开始我的博客之旅(废话了几句),下面进入正题: 移动端适配,对于我来说,一直是一个头疼的问题...
  • orange0111
  • orange0111
  • 2016-10-12 21:21:21
  • 2608

深入理解移动端像素知识与Viewport知识

在做移动端网页开发时,首先要搞清楚三种viewport和三种像素,只有明白了这些概念,才能更好地开发出适配不同分辨率设备的网页。 但参阅的博客越多,对这些概念越是混乱,同样的一个概念,在一篇博客...
  • aiolos1111
  • aiolos1111
  • 2016-07-20 18:04:40
  • 9521

弄清移动端网页中viewport、retina、高清图、dp单位等

一直以来,web移动端都有这么几个问题困扰着我: 单位太多,除了px、rem,其他单位到底啥意思? 设计师经常会问前端,我到底按照什么尺寸出设计稿? 高清图怎么做出来的? 边框1px...
  • Maxbyzhou
  • Maxbyzhou
  • 2016-11-20 20:05:28
  • 3374

响应式布局基础一:px、dpi、ppi的区别

px,即pixel,像素的意思。 像素有两种,一种是物理像素,一种逻辑像素。 以前一个逻辑像素是等于一个物理像素的。当一个逻辑像素对应多个物理像素的时候,这时候,显示会更清楚。 一个逻辑像素对应多少个...
  • a767536305
  • a767536305
  • 2016-02-23 21:24:01
  • 1141
收藏助手
不良信息举报
您举报文章:移动web开发之像素和DPR详解
举报原因:
原因补充:

(最多只允许输入30个字)