移动端开发基础知识扫盲

栏目: CSS · 发布时间: 5年前

内容简介:也叫“密度无关像素”,可以认为是计算机坐标系统中的一个点,这个点代表一个可由程序使用的虚拟像素(比如CSS像素),然后由相关系统转换为物理像素。CSS像素是一个抽象单位,主要使用在浏览器上,用来精确度量(浏览器层面而言)WEB页面上的内容,一般来说CSS像素也被称之为设备无关像素(device - independent pixel) 简称DIPS。在不同的屏幕上,CSS像素所呈现的物理尺寸实质上都是一样的,而不同的是CSS像素与所对应的物理像素具数是不一致的,在普通屏幕下,1个css像素对应的就是1个物理

基本概念

物理像素

以iphone6为例,可知道:

分辨率 :1334pt x 750pt

指的是屏幕上垂直有1334个物理像素,水平有750个物理像素。

1、物理像素又叫“设备像素”,他是显示设备中最微小的物理部件,每个像素可以根据操作系统设置
自己的颜色和亮度,正是这些微小距离欺骗我们的眼睛从而看到图像效果。
2、物理像素也是厂商在出厂时就设置好了的————即一个设备的分辨率是固定不变的。复制代码

设备独立像素

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

CSS 像素

CSS像素是一个抽象单位,主要使用在浏览器上,用来精确度量(浏览器层面而言)WEB页面上的内容,一般来说CSS像素也被称之为设备无关像素(device - independent pixel) 简称DIPS。

在不同的屏幕上,CSS像素所呈现的物理尺寸实质上都是一样的,而不同的是CSS像素与所对应的物理像素具数是不一致的,在普通屏幕下,1个css像素对应的就是1个物理像素,而 retina 屏幕下,1个 css 像素对应的却是多个物理像素。这一点在移动端上会更加的明显,而在100%缩放模式下PC端上,我们就可以认为 1物理像素就等于1css像素。

总的来说,物理像素是设备在物理层面上不可再分割的最小单元,而“设备独立像素”则是一个统称的概念,它主要指的是应用软件在应用层面上如何度量内容,可以这么说,CSS像素就是设备独立像素中的一种,是WEB浏览器主要采用的度量单位。

PPI的概念

PPI 就是屏幕密度,它是指显示设备上每英寸(1英寸约等于2.54厘米)长度内存在的像素数量,单位即PPI。

其换算公式如下:

移动端开发基础知识扫盲

PPI最直观的的效果可以参考下图:

移动端开发基础知识扫盲

按照苹果公司的技术营销宣传,在 320PPI 以上的屏幕都可以被称之为retina屏幕。

DPR的概念

DPR 便是 device Pixel Ratio 的简称,即设备像素比,它反映了设备上的物理像素与设备独立像素对应关系,也就是说 DPR 可以让我们知道当前设备下逻辑像素与物理像素的对应情况。

它的值可以按照下面的公式计算出来:

设备像素比 = 物理像素 / 设备独立像素复制代码

在JavaScript中我们可以直接通过以下 window 上的属性获取设备像素比

window.devicePixelRatio复制代码

而在CSS中,可以通过以下属性获得:

-webkit-device-pixel-ratio;
-webkit-min-device-pixel-ratio;
-webkit-max-device-pixel-ratio; 复制代码

缩放的概念

在说缩放之前,我们先定义一个略微严格的规定:

100% 缩放情况下:1css像素 == 1物理像素复制代码

带着这个定义我们来看页面在浏览器中的缩放情况:

首先我们假如有一个2px * 2px 宽高的盒子。根据定义在100%缩放情况下 2px * 2px 是完全等同于 2px * 2px的物理像素。

如果现在去缩放浏览器,我们会发现2px*2px的尺寸会随着缩放而发生变化。实际上现代浏览器的缩放功能就是通过拉伸像素的方式实现的。而这种拉伸像素的方式也更能够让我们清晰了解独立像素与物理像素之间的差异。

首先,我们可以很明确的知道,浏览器不管怎么拉伸像素它也不可能改变物理层面上的像素(物理像素),所以它能也只能够改变自己的逻辑像素 - CSS像素,在放大的情况下 1css像素 会占据多个物理像素,从而在应用层面上使显示区域宽度变小,浏览器为了能够显示完整的内容从而出现滚动条,而缩小的情况下,多个css像素会被合并在一个1个物理像素中去显示。但是这种方式实际上是一种有损的过程,因为用1个物理像素去表示多个CSS像素,会导致内容丢失更多的细节。正是因为css像素的丢失,才导致内容变的更小。

更直观的了解可以看下图:

100%模式下 1css像素就等于 1物理像素

移动端开发基础知识扫盲

在放大的情况下,1css像素会占据多个物理像素

移动端开发基础知识扫盲

在缩小的情况下,多个css像素会被合并在物理像素中

移动端开发基础知识扫盲

视口 viewport

1.1 viewport 基础

viewport 解释为中文就是‘视口’的意思,也就是浏览器中用于显示网页的区域。在 PC 端,其大小也就是浏览器可视区域的大小,所以我们也不会太关注此概念;而在移动端,绝大多数情况下 viewport 都大于浏览器可视区,保证 PC 页面在移动浏览器上面的可视性。为提升可视性体验,针对移动端有了对 viewport 的深入研究。

1.2 viewport 详解

在移动端有三种类型的 viewport: layoutviewport、visualviewport、idealviewport。具体解释如下:

  • layoutviewport: 大于实际屏幕, 元素的宽度继承于 layoutviewport,用于保证网站的外观特性与桌面浏览器一样。layoutviewport 到底多宽,每个浏览器不同。iPhone 的 safari 为 980px,通过 document.documentElement.clientWidth 获取。
  • visualviewport: 当前显示在屏幕上的页面,即浏览器可视区域的宽度。
  • idealviewport: 为浏览器定义的可完美适配移动端的理想 viewport,固定不变,可以认为是设备视口宽度。比如 iphone 7 为 375px, iphone 7p 为 414px。

1.3 viewport 设置

我们通过对几种 viewport 设置可以对网页的展示进行有效的控制,在移动端我们经常会在 head 标签中看到这段代码:

<meta name='viewport' content='width=device-width,initial-scale=1,user-scale=no' />
复制代码复制代码

通过对 meta 标签三个 viewport 的设置,最终使页面完美展示。下面详细的阐释其具体含义:

  • width 设置的是 layoutviewport 的宽度
  • initial-scale 设置页面的初始缩放值,并且这个初始缩放值是相对于 idealviewport 缩放的,最终得到的结果不仅会决定 visualviewport,还会影响到 layoutviewport
  • user-scalable 是否允许用户进行缩放的设置

对上面的说明通过公式推导进行进一步的解释:

// 设定两个变量:  
viewport_1 = width;  
viewport_2 = idealviewport / initial-scale;

// 则:  
layoutviewport = max{viewport_1, viewport_2};  
visualviewport = viewport_2;
复制代码复制代码

只要 layoutviewport === visualviewport,页面下面不会出现滚动条,默认只是把页面放大或缩小。


以上所述就是小编给大家介绍的《移动端开发基础知识扫盲》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS3 Solutions

CSS3 Solutions

Marco Casario / Apress / 2012-8-13 / GBP 35.50

CSS3 brings a mass of changes, additions, and improvements to CSS across a range of new modules. Web designers and developers now have a whole host of new techniques up their sleeves, from working wit......一起来看看 《CSS3 Solutions》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码