手机的设备独立像素、分辨率和设备像素比到底是什么?

本篇文章介绍移动端网页开发中要遇到的一些概念,理解了这些概念,你就可以快速入门移动端网页开发了。

需要注意的是:电脑上并没有设备独立像素的概念,这里也不会做介绍。

在这之前,我先介绍一下我用的手机,我用它来说明这些概念。

我有一台坚果 Pro

坚果 Pro 的一些参数信息如下:

  • 设备独立像素:360 * 640。
  • 分辨率:1080 * 1920。
  • 设备像素比:3。

设备像素比

设备像素比,英文名是 Device Pixel Ratio,简称 DPR。但我想说的重点不是这个,我想说:设备像素比 = 分辨率 / 设备独立像素。

我们可以用 JavaScript 的 window.devicePixelRatio 接口获得这个值。

分辨率

我写了一个网页,里面有一个 div,长 360px,宽 640px。

我们用手机打开来 看一下

能看到,div 占据了手机水平宽度的 1/3,手机垂直高度的 1/3(上下 bar 的高度计算在内)。

这里就得出一个结论:1 CSS 像素等于 1 单位的分辨率。

需要注意的是,我们并没有能够获得手机分辨率的 JavaScript 接口。

但如果把这样的网页直接在手机上浏览,看起来就不是很方便

把整个网页都显示在手机小小的一方屏幕上,看起来字太小了,为了看清,我们势必要放大来看。

如果 是这样的,就好了

为了能做到这样,就要知道设备独立像素了。

设备独立像素

为了让网页适配移动端,我们通常要在网页的 head 里头加上这样一个 meta 标签。

<meta name="viewport" content="width=device-width">

这样的结果是:1 CSS 像素等于 1 单位的设备独立像素,等于 3 个单位(针对坚果 Pro)的分辨率了。

此时再打开页面 查看

可以看到,div 的宽度刚好充满手机宽度(而在高度上富裕出来的空间是因为有上下 bar 占据手机屏幕高度的原因,否则也是刚好充满屏幕高度的)。

使用 JavaScript 的 window.screen.widthwindow.screen.height 就能获得设备独立像素。

图片渲染的问题

设置好适配移动端的 meta 标签后,网页里的文字和颜色之类的渲染是没有问题的,但是图片渲染就会有问题。

举个例子,网页里有一个设定宽 128px、高 85px 的图片

img {
    width: 128px;
    height: 85px;
}

如果我们直接采用 128px * 85px 大小的图片,那么在 手机上看就会模糊

根本原因是:图片的 1 像素始终等于 1 单位分辨率,但是坚果 Pro 却用 3 * 3 的分辨率阵容渲染图片上的每块像素----也就是把图片放大了 3 倍显示。

所以针对坚果 Pro 这种设备像素比是 3 的手机,网页里插入的图片尺寸总要是网页中设定宽高的 3 倍,才能保证图片在消耗最少带宽的情况下 保证图片的清晰度

右面图片的尺寸是 384px * 255px,可以看到是清晰的。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!