Viewport介绍
一、Viewport的概念
通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般 来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正 常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由 设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。

二、css中的1px并不等于设备的1px
在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css 中的像素就是设备的物理像素。但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理 像素是不同的。在为桌面浏览器设计的网页中,我们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的移动设备中,屏幕像素密度都比较低,如 iphone3,它的分辨率为320x480,在iphone3上,一个css像素确实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像 素密度越来越高,从iphone4开始,苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着 同样大小的屏幕上,像素却多了一倍,这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为 ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不 同,没有一个定论。
还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。

三、利用meta标签对viewport进行控制
我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中:

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

该meta标签的作用是让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放。也不允许用户缩放不同的网站有不同的要求,但让 viewport的宽度等于设备的宽度,这个应该是大家都想要的效果,如果你不这样的设定的话,那就会使用那个比屏幕宽的默认viewport,也就是说会出现横向滚动条。
meta viewport 标签首先是由苹果公司在其safari浏览器中引入的,目的就是解决移动设备的viewport问题。后来安卓以及各大浏览器厂商也都纷纷效仿,引入对meta viewport的支持,事实也证明这个东西还是非常有用的。
在苹果的规范中,meta viewport 有6个属性(暂且把content中的那些东西称为一个个属性和值),如下:

这些属性可以同时使用,也可以单独使用或混合使用,多个属性同时使用时用逗号隔开就行了。

四、总结
第一,必须设置 meta viewport 标签
如果不设置meta viewport标签,那么移动设备上浏览器默认的宽度值为800px,980px,1024px等这些,总之是大于屏幕宽度的。这里的宽度所用的单位px都是指css中的px,它跟代表实际屏幕物理像素的px不是一回事。
第二、设置浏览器视口宽度为设备理想宽度
每个移动设备浏览器中都有一个理想的宽度,这个理想的宽度是指css中的宽度,跟设备的物理宽度没有关系,在css中,这个宽度就相当于100%的 所代表的那个宽度。我们可以用meta标签把viewport的宽度设为那个理想的宽度,如果不知道这个设备的理想宽度是多少,那么用device- width这个特殊值就行了

<meta name="viewport" content="width=device-width, initial-scale=1">

Viewport介绍相关推荐

  1. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍

    上一篇博文,可算把像素这个东西讲清楚了.在这篇博文里面,将继续介绍viewport相关的内容. 很多博客都会提到PPK所讲的三个viewport,有的讲的比较复杂,看的云里雾里,我这里也大概介绍一下, ...

  2. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍 1

    上一篇博文,可算把像素这个东西讲清楚了.在这篇博文里面,将继续介绍viewport相关的内容. 很多博客都会提到PPK所讲的三个viewport,有的讲的比较复杂,看的云里雾里,我这里也大概介绍一下, ...

  3. 跨终端响应式页面设计入门

    跨终端/响应式页面不外乎是让各种分辨率的屏幕都能顺利阅读你的页面,常规来讲一个跨终端页面,在宽屏的电脑上看和在小屏幕手机上看的布局是不同的,布局不同的原因是为了让读者更好地阅读你的页面,见下图: 这里 ...

  4. 前端:移动端“淘宝造物节” 3D绚酷空间 VR 场景

    前端:移动端"淘宝造物节" 3D绚酷空间 VR 场景 资源分享,第六节之后的视频资源没找到,下面附效果图.资源.源码地址. 链接:https://pan.baidu.com/s/1 ...

  5. HTML5页面的基本框架结构

    生成页面的基本框架主要还是在head标签中增加一些基本的标签 1.<title></title>标签 <title>标签顾名思义,为标题,名字的意思,也就是设置网页 ...

  6. viewport使用 html5

    viewport 语法介绍: 01 02 <meta name="viewport" 03 content=" 04 height = [pixel_value | ...

  7. HTML5的viewport使用

    viewport 语法介绍: 01 <!-- html document --> 02 <meta name="viewport" 03 content=&quo ...

  8. 【网络爬虫】(1) 网络请求,urllib库介绍

    各位同学好,今天开始和各位分享一下python网络爬虫技巧,从基本的函数开始,到项目实战.那我们开始吧. 1. 基本概念 这里简单介绍一下后续学习中需要掌握的概念. (1)http 和 https 协 ...

  9. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

最新文章

  1. 基于流式的md5计算-多线程下载工具Lwget介绍
  2. 3梅林刷官改变砖_陶瓷透水砖的四大明显优势
  3. menuetos oracle,使用DistroTest服务免费在线测试Linux和Unix操作系统
  4. 如何在 ASP.NET CORE 中获取客户端 IP ?
  5. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】小乐乐切割方块(思维,水题)
  6. go实现区块链[3]-遍历区块链与数据库持久化
  7. python调用ping命令_python调用系统命令ping
  8. 代码描述10911 - Forming Quiz Teams
  9. 【Retinex】【Frankle-McCann Retinex】matlab代码注释
  10. 密码学基础(二):对称加密
  11. 硬件知识:网线的分类知识笔记,看完你就懂了!
  12. ubuntu2004 安装protoc
  13. Latex表格排版大全 基于 IEEE双栏论文(设置单元格行列间距,自动换行设置)
  14. QT MPlayer播放器
  15. 新旭完成总金额达美金4,000万元C轮融资;波士顿科学两款创新产品同时进入创新医疗器械特别审查程序 | 医药健闻...
  16. 微信点餐系统——用Enum枚举来保存商品状态
  17. uni-app服务器端搭建
  18. 学习笔记——Kaggle_Digit Recognizer (Random Forest算法 Python实现)
  19. HMailServer 5.6版本完整版汉化包
  20. [Unity3d]如何制作unity能使用的RGBA材质贴图

热门文章

  1. 【读书分享】流血的仕途
  2. 孤岛惊魂风格哈啥地方噶啥地方嘎斯的发
  3. iDevice(09)纯粹编程机
  4. python 偏函数应用
  5. linux 切换到mysql用户_linux怎么切换用户
  6. 服务代码 *99#、 *98*1# 、 *98*2#的区别
  7. 公司的收益如何预测?时间序列模型轻松搞定
  8. 上计算机课如何摆脱桌面控制,江苏成人高等教育计算机基础课程统考样卷说明运行桌面上.DOC...
  9. php mysql prepare_php mysqli prepare使用实例介绍
  10. web前端——jQuery