移动端的视口/像素基本知识

一、屏幕尺寸

  指屏幕对角线的长度,单位是英寸,1英寸=2.54cm

二、屏幕分辨率(物理像素)

  指在横纵方向上的像素点,单位是px,1px=1个像素点。这里的1像素指的是设备的1个物理像素点。如第一点中的图,iphone6的分辨率为750*1334px,即是横向上有750个物理像素点,纵向上有1334个物理像素点。

 三、像素密度(pixels per inch,PPI)

  屏幕上每英寸可以显示的像素点的数量,单位ppi;屏幕像素密度与屏幕尺寸和屏幕分辨率有关。以上图的iphone6的为例: 开方(750*750+ 1334*1334)/ 4.7英寸 = 326 ppi

四、位图像素

  1个位图像素对应1个物理像素,图片才能得要完美清晰的展现(不失真,不锐化)。要显示宽度为30px*18px(CSS像素)的照片,在DPR为2的情况下,对应的图片需要为60px*36px;DPR为3的情况下,对应的图片需要为90px*54px;基于此种情况,移动端的图片一般需要设计2套,以适应不同的像素比。

五、设备独立像素

  设备独立像素是CSS像素和物理像素之间转换的很重要的关键点;在设置了width=device-width时,那么设备独立像素就等于CSS像素;

五、像素比

  定义:设备物理像素比上设备独立像素;

  公式:devicePixelRatio = 设备物理像素(分辨率) / 设备独立像素(近似CSS像素);

  以iphone6plus为例:DPR = 1080 / 414 ≈ 3

  通过JS获取:window.devicePixelRatio

  通过CSS获取:@media only screen and (-webkit-min-device-pixel-ratio:2){}

 六、布局视口(layout viewport)

  在移动设备上,为了容纳为电脑浏览器设计的网站,默认的布局视口的宽度远大于移动设备屏幕的宽度;布局视口的出现,在极大程度上帮助了桌面网站到移动设备上的转移。以下是常见的移动端浏览器的布局视口值,单位为px(CSS像素)该值是不可变的(布局视口不变,和性能有关系,如果布局视口变化了,那么就会触发重汇重排),可以通过document.documentElement.clientWidth来获取布局视口值。

当网页的宽度大于以上的值时,就会出现横向滚动条。

在这种情况下,以上面的iphone5为例,宽度占满的时候,需要640个物理像素,换而言之,需要980px的CSS像素,其对应的像素比为:640/980;而对于iphone6而言,宽度占满的时候,需要750个物理像素,换而言之,需要980px的CSS像素,其对应的像素比为:750/980;这里说明了,在没有设置width=device-width的情况下,针对不同的移动设备,该像素比值是变化不固定的,此种情况是难于做适配的。

另一种情况,设置了width=device-width的情况下,即是布局视口的宽度等于设备独立像素,这种情况下,CSS像素就等于设备独立像素了;

七、视觉视口(visual viewport)

  用户看到的网站展示区域,一般视觉视口和设备宽度一致。并且它的CSS像素的数量会随着用户缩放而改变,单位是px(CSS像素);该值是可变的(缩放情况下)。可以通过window.innerWidth获取。

八、缩放

1.用户放大:一个CSS像素的面积变大,视觉视口内的CSS像素个数变少,视觉视口的尺寸变小(能看到的内容变少了,所以视觉视口变小);切记,布局视口的大小是不变的,没有设置width=device-width的情况下,布局视口是980px;设置了width=device-width的情况下,布局视口的大小等于设备独立像素。

2.用户缩小:一个CSS像素的面积变小,视觉视口内的CSS像素个数变多,视觉视口的尺寸变多(能看到的内容变多了,所以视觉视口变大);切记,布局视口的大小是不变的,没有设置width=device-width的情况下,布局视口是980px;设置了width=device-width的情况下,布局视口的大小等于设备独立像素。

3.系统缩放:在meta标签中使用initial-scale=1.0,该initial-scale值改变的是布局视口和视觉视口而width=device-width改变的是布局视口,所以下面的两个例子的效果是一样的;当布局视口超过视觉视口才会出现滚动条,滚动条和视觉视口有关的。

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5     <meta name="viewport" content="width=device-width">
 7     <title>系统缩放1</title>
 8     <style media="screen">
 9       *{
10         margin: 0;
11         padding: 0;
12       }
13       #div1{
14         width: 187px;
15         height: 200px;
16         background: blue;
17       }
18     </style>
19   </head>
20   <body>
21     <div id="div1"></div>
22   </body>
23 </html>

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5         <meta name="viewport" content="initial-scale=1.0">
 6     <title>系统缩放2</title>
 7     <style media="screen">
 8       *{
 9         margin: 0;
10         padding: 0;
11       }
12       #div1{
13         width: 187px;
14         height: 200px;
15         background: blue;
16       }
17     </style>
18   </head>
19   <body>
20     <div id="div1"></div>
21   </body>
22 </html>

initial-scale值的变化对布局视口和视觉视口的影响:在iphone6下,该值变大的时候,CSS元素的面积变大,看到的内容变少了,所以布局视口和视觉是变小了;反之,设置initial-scale为0.5时,布局视口和视觉视口都会变大,变为750.

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5         <meta name="viewport" content="initial-scale=2.0">
 6     <title>系统缩放2</title>
 7     <style media="screen">
 8       *{
 9         margin: 0;
10         padding: 0;
11       }
12       #div1{
13         width: 100px;
14         height: 200px;
15         background: blue;
16       }
17     </style>
18   </head>
19   <body>
20     <div id="div1"></div>
21   </body>
22 </html>

九、width=device-width和initial-scale之间的冲突

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5     <meta name="viewport" content="width=device-width,initial-scale=0.5">
 6     <title>冲突</title>
 7     <style media="screen">
 8       *{
 9         margin: 0;
10         padding: 0;
11       }
12       #div1{
13                 width: 375px;
14                 height: 50px;
15         background: blue;
16       }
17     </style>
18   </head>
19   <body>
20     <div id="div1"></div>
21   </body>
22 </html>

如果设置了initial-scale的值为2.0,那么布局视口和视觉视口为187.5px,而width=device-width设置的布局视口大小为375px;谁大听谁的,所以最终的布局视口和视觉视口的大小都是375px。

 十、完美视口

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

width=device-width:设置布局视口的大小等于设备独立像素;

initial-scale=1.0:设置布局视口和视觉视口的大小等于设备独立像素;

user-scalable=no:不允许用户进行缩放;

minimum-scale和maximum-scale分别这只最小的缩放为1.0,最大的缩放为1.0,表示不允许用户进行缩放操作。

原文地址:https://www.cnblogs.com/llcdxh/p/9532385.html

时间: 2024-10-15 10:04:58

移动端的视口/像素基本知识的相关文章

移动端开发系列——像素与viewport

目录 移动端开发的基本观点 像素基础知识 viewport原理解析 弹性布局 响应式设计 1rem的运用 移动端的事件 zepto库的使用 移动端开发的基本观点 移动端开发的意义移动端用户使用量 -> 市场需求 -> 市场供给 -> 公司需要移动端开发人才 -> 工资高,就业易 -> 涌现大波程序猿 -> 到了猴年马月,工资才会降下来 -> 新的技术涌现,VR/AI -> 市场需求攀升 -> 重走一波老路...... 扯远了,以上大致就是学习移动端开发

移动端WEB 像素基础知识

px:css pixels 逻辑像素,浏览器使用的抽象单位 dp(Android),pt(iOS):device independent pixels 设备无关像素,逻辑像素 dpr:devicePixelRatio 设备像素缩放比 DPi:打印机每英寸可以喷的墨汁点(印刷行业) PPI:屏幕每英寸的像素数量,即单位英寸内的像素密度 目前,在计算机显示设备参数描述上,二者意思表达的是一样的. 计算公式:以 iPhone5 为例, ppi = √(11362 + 6402) / 4 = 326 p

移动端边框1像素的问题与解决方法

移动端1px变粗的原因 为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个'px'的含义是不一样的. 移动端html的header总会有一句 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 这句话定义了本页面的viewport的宽度为设备宽度,初始缩放值和

做服务端开发所需要的知识

网上流传一篇文章叫<Linux C++服务器端开发技术>,也就是做Linux C++开发需要哪些技术,内容如下 1.基本知识:掌握C/C++语法,熟悉STL标准库.ACE库.Boost库. 2.应用技能:多线程编程.网络编程.Oralce数据库.内存管理.正则表达式. 3.内功修炼:算法与数据结构.操作系统.软件工程.数据库原理.设计模式. 4.综合素质:沟通能力.表达能力.人际交往能力.英文阅读能力. 5.工具使用:GDB.GCC.Makefile.单元测试.SVN版本管理.UML. 6.其

移动端web之像素基础

px:css pixels逻辑像素,浏览器使用的抽象单位 dp,pt :device independent pixels 设备无关像素 dpr:devicePixelRatio 设备像素缩放比 计算公式:1px=(dpr)2 * dp iphone 5 的dpr等于2 因此:平面上 1px=4*dp  640dp*1136dp 纬度上 1px=2*dp  320px*568px DPI:打印机每英寸可以喷的墨汁点 PPI:屏幕每英寸的像素数量,即单位英寸内的像素密度 在计算机显示设备参数描述上

移动端开发--物理像素和逻辑像素

虽说在在web app开发中,只需要掌握页面布局,页面适配,能够将页面完美在各种设备上展现.但是,为什么要这样做?这样做原理是什么?这么优点是什么?深究下去,大家不一定很清晰. 那么,咱们一起学习下~ 一.2种像素 设备像素 设备像素是指设备中使用的物理像素,又称硬件像素 css像素 css像素是指css样式到吗中使用的逻辑像素.如果在一个设备中,硬件像素数与css像素数相等,将不会产生任何问题.但是,由于视网膜设备的出现,这两者之间的差异变得越来越大.硬件像素数与css像素数成为两种截然不同的

移动端0.5像素0.5像素边框0.5像素圆角边框

0.5像素线条: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1,maximum-scale=1.0,user-scalable=no" name="viewport"> <meta content="yes&quo

原 浅谈移动端开发--物理像素和逻辑像素

1.物理像素 设备像素,在同一个设备上,它的物理像素是固定的,这是厂商在出厂时就设置好了的,即一个设备的分辨率是固定的. 2.逻辑像素 CSS像素,viewport中的一个小方格,CSS样式代码中使用的是逻辑像素.如果在一个设备中,物理像素与逻辑像素相等,将不会产生任何问题.但是,在iphone 4中,物理像素是640px*960px,而逻辑像素数为320*480px.因此,需要使用大约4个物理像素来显示一个CSS像素. 3.像素比 物理像素与逻辑像素之间的比例.当像素比为1:1时,使用1个物理

移动端一物理像素边框的设置

.border-1{ position: relative; } .border-1:after{ content: ' '; position: absolute; width: 100%; left: 0; bottom: 0; border-top: 1px solid rgba(7, 17, 21, 0.1); } @media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) { .border-1: