由<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>引发的一系列问题

最近在写一个移动端的页面,起初只知道使用百分比布局就可以适应多个终端,果然,是我太年轻。当设计师甩给我一张以iphone6像素为基准的750px设计图的时候,因为这段代码<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>,开始网页布局之路,但是出现文字字体与页面图标大小不匹配的问题。一直以为width=device-width中的device-width是等于设备的物理宽度,可以理解为设备的分辨率。但是查阅资料后,发现以上关于device-width观点,对于PC端,这是没错的,因为PC端屏幕的物理宽度就等于电脑的屏幕分辨率,也等于我们页面布局宽度,一 一对应。但是,对于移动端,就不是这么简单的,接着往下看。

  我们先来了解几个概念,有助于对以上问题的理解。

物理像素

又称设备像素,是显示屏能够控制的最小显示单位,可以理解原子是组成分子的最小单位一样。其实一个个物理像素组成的就是设备的屏幕分辨率。所以说,我们平常说的设备的分辨率就是指的设备的物理像素。

逻辑像素

又称为设备独立像素(device independent pixels),也叫密度无关像素

用于独立于设备,用于逻辑上衡量像素的单位, 也就是css像素, 可转换为物理像素。

所以说,物理像素和设备独立像素之间存在着一定的对应关系。比如,iphone6的分辨率是750x1334,即是物理像素,但是逻辑像素是375x667,如何对于,就是设备像素比的事。

   设备像素比

接上,是设备上物理像素和设备独立像素(device-independent pixels (dips))的比值。所以说,iphone6的设备像素比为2。

详细了解设备像素比可参考:http://www.zhangxinxu.com/wordpress/?p=2568

所以,回到正题,设计师用的到底是物理像素,还是逻辑像素?回答:物理像素。那前端用的啥?回答:逻辑像素。如何衔接二者?????那我们回到最初这段代码

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>。首先明白viewport指的是什么?

通俗的讲,就是移动端的浏览器拿来展示网页的区域,但是这个区域又不限于浏览器的可视区域。这里引出两个概念:layout viewport和visual viewport。visual viewport指的是

浏览器的可视区域,而layout viewport指的就是整个页面,通常比visual viewport大。可参考下图。

继续说,layout viewport一般浏览器会有默认值,980px或1024px(也可能是其它值,这个是由设备自己决定的),这是考虑到在PC端的页面也能正常显示,但实际的移动端的

设备分辨率比PC端小。所以width=device-width的作用就是将layout viewport=visual viewport,页面不会出现滚动条,而这个device-width指的是设备的逻辑像素。比

如,iphone6的分辨率是750x1334,即是物理像素,但是逻辑像素是375x667,设计师用前物理像素设计原型图,而前端用后逻辑像素布局。前端实现时,布局通常用百分比实现,

所以不用写死页面整个宽度,只有页面字体和小图标,虽然是按750设计的,可以考虑用rem进行实现,用等比缩放的方法进行解决。

深入了解viewport,可参考:http://www.cnblogs.com/2050/p/3877280.html

还有一个概念:像素密度(PPI),感兴趣的朋友可参考链接:https://segmentfault.com/a/1190000004383049?_ea=594611

http://www.chinaz.com/manage/2015/0902/441624.shtml

  第一次写博客,可能写的不好,希望看的朋友谅解,也指出文章的不足。目前项目也正在实践中,之后的问题总结会不定时更新。

时间: 2024-08-28 07:24:15

由<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>引发的一系列问题的相关文章

关于&lt;meta name=&quot;viewport&quot; content=&quot;width= device-width,user-scalable= 0,initial-scale= 1.0,minimum-scale= 1.0&quot;&gt;

<meta name="viewport" content=" width= device-width, user-scalable= 0, initial-scale= 1.0, minimum-scale= 1.0"> width - viewport的宽度 height - viewport的高度 initial-scale - 初始的缩放比例 minimum-scale - 允许用户缩放到的最小比例 maximum-scale - 允许用户缩放到

meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1.0&quot; 解释

meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta name="viewport" content="width=device-width,initial-scale=1.0"> content属性值 : width:可视区域的宽度,值可为数字或关键词device-width height:同width intia

&lt;head&gt;中&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initical-scale=1&quot;的作用&gt;

<meta name="viewport" content="width=device-width,initical-scale=1"的作用> content属性值 : width:可视区域的宽度,值可为数字或关键词device-width height:同width intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放 maximum-scale=1.0, minimum-scale=1.0;可视区域

详解 &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width&quot;&gt;

一次面试被要求详解 <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-w

html - &lt;meta name=&quot;viewport&quot; content=&quot;XX&quot;/&gt; 标签常见属性及说明

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" /> 在网页的<head>中增加以上这句话,可以让网页的宽度自动适应手机屏幕的宽度. 其中: width=device-width :表示宽度是设备屏幕的宽度 height=device-he

&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1.0&quot;&gt;解释

content属性值 : width:可视区域的宽度,值可为数字或关键词device-width height:同width intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放. maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别. maximum-scale用户可将页面放大的程度,1.0将禁止用户放大到实际尺寸之上. user-scalable:是否可对页面进行缩放,no 禁止缩放.

meta name=&quot;viewport&quot; 属性详解

随着高端手机(Andriod,Iphone,Ipod,WinPhone等)的盛行,移动互联应用开发也越来越受到人们的重视,用html5开发移动应用是最好的选择.然而,每一款手机有不同的分辨率,不同屏幕大小,如何使我们开发出来的应用或页面大小能适合各种高端手机使用呢?学习html5 viewport的使用能帮你做到这一点…… viewport 语法介绍: 01 <!-- html document -->02 <meta name="viewport"03 conten

html5之meta标签viewport应用

在html5移动页面中,viewport定义必不可少. 首先了解下关于viewport的概念: 先了解移动设备的屏幕尺寸和设备尺寸: iPhone3 设备尺寸 320*480 ; 屏幕尺寸  320*480 iPhone4 设备尺寸 320*480 ; 屏幕尺寸  640*960 iPhone5 设备尺寸 320*568 ; 屏幕尺寸  640*1136 从iPhone3到iPhone4,设备尺寸没变的情况下,屏幕尺寸放大了一倍:viewport也应运而生,即屏幕尺寸. 示例: <meta na

在HTML中增加meta name=&quot;viewport&quot;控制页面不随着放大缩小变形的实现方式

PC端添加以下meta内容: <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> .... </head> 2. Mobile端添加以下meta内容: <head> <meta name="