viewport:视口,视觉窗口,显示区域。
在显示面积上手机屏幕相对桌面显示器要小很多,在几年前(现在也如此)大部分网站都是为桌面显示器浏览而设计,很少考虑到适应手机屏幕,所以如果用手机浏览大多网站时会出现问题,比如常见固定宽度的网页会出现横向竖向滑动条,当然这不算什么大问题;但如果是浏览流动布局的网页那情况会非常糟糕,设想一个宽度为30%的侧边栏对于320px手机屏幕而言也就96px,只能容纳8个12px的汉字,可阅读性非常差。
为了让手机也能获得良好的网页浏览体验,Apple找到了一个办法:在移动版(iOS)的Safari中定义了viewport meta标签,它的作用就是创建一个虚拟的窗口(viewport),而且这个虚拟窗口的分辨率接近于桌面显示器,Apple将其定位为980px。以一代iphone下的Safari来说就是:
在iphone的320px物理屏幕上——视觉窗口(visual viewport),创建出了一个980px的虚拟窗口——布局窗口(layout viewport),在视觉窗口(visual viewport)中我们可以拖动横向竖向滑动条或者放大缩小网页,来达到最佳的浏览效果(类似桌面浏览器);而布局窗口(layout viewport)用来配合CSS渲染布局,例如当我们设置一个容器的宽度为100%时,这个容器的实际值为980px而不是320px。如此一来大部分 网页就能以缩放的形式正常的显示在手机屏幕上了。
如何设置viewport
有了layout viewport似乎解决手机浏览网页的难题,但如果遇到专门为手机优化的网页就又有新的问题:是的,因为iphone的layout viewport默认为980px,导致专为其优化的320px宽的页面只能以缩放的方式显示,这时就需要对viewport进行设置:
<meta name=”viewport” content=”width=device-width, initial-scale=1.0, user-scalable=no”/>
这个是最常见的一条viewport meta代码,将viewport定义为:宽度为设备宽度,初始缩放比例为1倍,禁止用户缩放。设置好后我们的页面就显示完美了:viewport全部属性和值如下:
width: viewport宽度
height: viewport高度
initial-scale: 初始缩放比例
maximum-scale: 最大缩放比例
minimum-scale: 最小缩放比例
user-scalable: 是否允许用户缩放例:width=960 或 device-width
height=1000 或 device-height
initial-scale=0.5
maximum-scale=2
minimum-scale=1
user-scalable=1 或 0 (yes 或 no)
layout viewport的默认值在Apple实现viewport后,其他浏览器也加入了对viewport meta的支持,但彼此间还是有些差异,差异最大的是layout viewport的表现:
Safari iPhone: 980px
Opera: 850px
Android WebKit: 800px
IE: 974px
最后关注下width=device-width其实这个属性值很有意思,字面意应该是viewport宽度等于设备宽度(这里的设备宽度指的并不是物理像素而是设备独立像素,其中设备物理像素和设备独立像素比称为devicePixelRatio),浏览器给出了个定值:320px;这个值还是源于 Apple,因为早期iphone的分辨率为320px × 480px,大量为iphone量身定制的网站都设置了viewport:width=device-width,并且按照宽度320px来设计制作,所 以其他浏览器加入viewport支持时为了兼容性也将device-width定义为了320px。

转载于:https://www.cnblogs.com/diantao/p/5292652.html

什么是viewport,为什么需要viewport相关推荐

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

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

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

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

  3. layout viewport、visual viewport 和 ideal viewport 的区别?

    相关知识点: 如果把移动设备上浏览器的可视区域设为viewport的话,某些网站就会因为viewport太窄而显示错乱,所以这些浏览器就决定 默认情况下把viewport设为一个较宽的值,比如980p ...

  4. 作为前端的你不能不知道的知识,总结物理像素,像素密度,分辨率,CSS像素,设备像素比,二倍图,layout viewport、visual viewport 、ideal viewport、meta。

    此篇文章总结物理像素,像素密度,分辨率,CSS像素,设备像素比,二倍图,layout viewport.visual viewport .ideal viewport.meta. 首先我们来谈谈最基础 ...

  5. CSS布局基础之二认识Viewport

    什么是viewport viewport,等同于浏览器窗口. 功能:约束你网站中最顶级包含块(containing block)元素html标签. 什么是包含块(containing block)?下 ...

  6. 【响应式Web前端设计】Viewport解析

    文章目录 1 什么是 Viewport? 2 设置 Viewport 1 什么是 Viewport? viewport 是用户网页的可视区域. viewport 翻译为中文可以叫做"视区&q ...

  7. Ext Js MVC系列二 利用Application和Viewport进行应用程序初始化和页面布局

    通过上一篇我们已经对Ext js MVC框架开发有了一个大概的了解,这一篇将利用Application和Viewport进行应用程序的初始化和页面布局.我想从以下几方面来进行总结. 1,通过Ext.L ...

  8. 移动端像素概念,viewport,适配

    想必大家对移动端像素的概念比较疑惑,总结一下我们经常会听到的几个词. 一.屏幕尺寸 平时我们通常提到手机的尺寸,比如iPhone6是4.7英寸的.手机的屏幕是以英寸为单位的.我们平时使用最多的单位是: ...

  9. 移动前端开发之viewport,devicePixelRatio的深入理解

    移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...

  10. XNA2.0 API --- ViewPort.Unproject出错啦

    XNA2.0系统API居然出错!折腾了我N久.现象是鼠标射线不准,莫名其妙的不准,有时旋转一下相机就乱了,在官网论坛上找了一个替代版本,问题解决.这个问题XNA1.0并不存在,到2.0就有了,用反编译 ...

最新文章

  1. [YTU]_2429( C语言习题 学生成绩输入和输出)
  2. 利用UDP19端口实施DOS攻击的真实案例
  3. 新手入门:史上最全Web端即时通讯技术原理详解
  4. django 1.8 官方文档翻译: 2-1-3 模型元选项
  5. 解锁system分区
  6. 实战案例!使用 Python 进行 RFM 客户价值分析!
  7. 自成一派的正则表达式
  8. 行内和块级元素区别?如何让行内元素设置宽高?
  9. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)
  10. SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈
  11. 图片转PDF有哪些软件?这几款软件建议收藏
  12. od使用的小tips
  13. Oracle 10g的闪回机制
  14. WindowManager LayoutParams 上
  15. 版本管理之gitlab实践教程:基础篇(3)
  16. c/c++环境下YOLO4的配置和试运行
  17. Symfony\Component\Debug\Exception\FatalErrorException: Allowed memory size of 2147483648 bytes
  18. ARAP(As-Rigid-As-Possible)变形算法
  19. 频繁的去跳槽真的有这么可怕吗?
  20. selenium 爬虫项目实例 爬取社保五险

热门文章

  1. php调用Python找不到模块,从php调用python脚本不导入所需模块
  2. NoSQL 之 Redis 配置与优化
  3. Windows7 用putty ssh连接 Linux
  4. Python之Unicode编码
  5. Springboot实现Web聊天室
  6. 全基因组重测序揭示了野生大豆的局部适应和分化的特征
  7. 用正交法设计测试用例
  8. 一条sql语句查询成绩排名
  9. TomcatJSON parse error: Invalid UTF-8 解决办法
  10. 【Python】opencc库简单使用