本篇主要是记录一下移动端视口的分类说明和其它的一些知识。在开始之前,先看一个典型的例子:

<meta name="viewport" content="width=device-width,initial-scale=1">
@media screen and (max-width:480px){
//宽度不超过480px是的样式
}

上述代码相信大家在做移动端开发时经常去书写。它研究了两个内容:meta视口和宽度媒体查询。通常我们都会称上述代码为CSS3的媒体查询功能。使用媒体查询功能能够解决针对桌面级的web设计在移动端不同尺寸下的兼容展现。

一、像素

研究视口之前,先说明一下像素。像素是网页布局的基础,web开发者凭直觉使用它。

一个像素就是计算机屏幕能显示一特定颜色的最小区域。

实际上,有以下两种像素

  • 设备像素:设备屏幕的物理像素,任何设备的物理像素的数量都是固定的。
  • CSS像素:为Web开发者创造的,在CSS(和JavaScript)中使用的一个抽象的层。

说明一下:web开发过程中,我们基本使用的都是CSS像素,设备像素基本不会用。例如:width:200px 的元素跨越了 200 个CSS像素。CSS像素相当于多少个设备像素取决于屏幕的特性(是否高密度)和用户进行的缩放。当用户放大的越大,一个CSS像素覆盖的设备像素就越多,因此这个元素不一定会跨越css设置等值的设备像素。在旧的屏幕上,当缩放程度为100%时,一个CSS像素等于一个设备像素。在高密度屏幕上,例如苹果的视网膜屏幕,一个CSS像素跨越了多个设备像素。对照下图:

(红色表示CSS像素、蓝色表示设备像素)

我们在开发中,操作的是CSS像素,让CSS像素去覆盖设备像素。不过当我们使用CSS和JavaScript的时候,其实并不会在意一个CSS像素跨越了多少个设备像素。这个依赖于屏幕特性和用户缩放程度的计算由浏览器完成。

二、三个视口

我们经常在开发中会使用到例如width:35%这样的代码去布局。它表示占用父元素的百分比宽度。我们看html文档结构知道最外层的一层是html元素。那么html元素的包含块是什么?这就是要说得视口了。在CSS标准文档中,它被称为初始包含块。这个初始包含块是所有CSS百分比宽度推算的根源。(在桌面上,视口的宽度和浏览器窗口的宽度一致)。

1.布局视口

移动端设备如果使用视口的宽度和浏览器窗口宽度一样会导致很丑陋的结果。想象一下。一个针对桌面级的左右结构页面布局,左侧站浏览器窗口的20%,右侧占80%。这样的页面在我们小屏幕的移动端设备上会缩放的非常小。也许会导致大部分数据重叠覆盖,也可能导致数据遮挡无法显示全部。

所以,移动端浏览器厂商必须保证即使在窄屏幕下我们的页面可以展示的很好,他们将视口的宽度设计得比屏幕宽度宽出很多。这样。在移动端,视口与移动端浏览器屏幕宽度就不再关联,而是完全独立的了。我们称它为 布局视口。CSS布局会根据它来计算并被约束。

看下面的图例,体会一下布局视口

2.视觉视口

虽然独立的布局视口很大程度上帮助了桌面网站过渡到手机上。但我们不能完全忽视移动设备上的屏幕尺寸。所以该说明一下视觉视口了。

视觉视口是用户正在看到的网站的区域。用户可以通过缩放来操作视觉视口,同时不会影响布局视口。布局视口还是保持在原来的宽度。

看下图说明一下视觉视口区域

如上图,红色箭头之间的区域就是视觉视口的区域。它和设备的屏幕一样宽,并且它的CSS像素的数量会随着用户缩放而改变。

3.理想视口

布局视口的默认宽度并不是一个理想的宽度。显然用户希望在进入页面时可以不需要缩放就可以有一个理想的浏览和阅读尺寸。理想视口仍是为移动端设备准备的。只有手动添加meta视口标签方才生效。如果没有meta视口标签,那么布局将会维持它的默认宽度。

如下代码,告诉浏览器,布局视口的宽度应该与理想视口的宽度一致。(一般来讲我们都会将布局视口的宽度设为设备宽度一样,然后使用css媒体查询编写一套针对移动端的展示方案。)

<meta name="device" content="width=device-width">

  定义理想视口是浏览器的工作,不是设备或操作系统的工作。另外,建议大家在书写meta视口时,应向本篇开始时的典型例子那样书写。

三、总结

  本篇介绍了css像素和设备像素。开发人员在开发中基本上使用的都是css像素。

  介绍了三种视口

布局视口:不再与移动端浏览器相关联,完全是独立的。实际上布局视口的宽度要比屏幕宽出很多。

视觉视口:用户看到的网站展示区域,一般视觉视口和设备宽度一致。并且它的CSS像素的数量会随着用户缩放而改变。

理想视口:为了使网站在移动端有最理想的浏览和阅读宽度而设定。需要手动添写meta视口标签通知浏览器操作。使用它配合css媒体查询制定移动端展示方案。

关于视口这一块内容,只是整理了本人可以理解的部分内容。方便在开发中可以理解一些东西。不过以前学习的时候还介绍了设备像素比之类的判定的诸多内容。因为我在开发中基本没有使用过。所以也就忽略了。还是先搞懂能够懂的东西。如有错误,欢迎指正。

感谢阅读。

移动端web开发——视口的更多相关文章

  1. 移动端web开发的一些知识点

    整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...

  2. 手摸手带你学移动端WEB开发

    HTML常用标签总结 手摸手带你学CSS HTML5与CSS3知识点总结 手摸手带你学移动端WEB开发 好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/Ro ...

  3. 移动端 Web 开发前端知识整理

    文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...

  4. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  5. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  6. 移动端web开发基础概念

    最近在了解移动端web开发的相关知识,有些概念总是模糊不清,这次花费了一些时间整体的梳理了一遍. 分辨率 分辨率可以从显示分辨率与图像分辨率两个方向来分类.显示分辨率(屏幕分辨率)是屏幕图像的精密度, ...

  7. 移动端Web开发注意点

    不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ...

  8. 移动端Web开发如何处理横竖屏

    <!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...

  9. 移动端web开发技巧(转)

    原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...

随机推荐

  1. Linux字符设备驱动框架

    字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l ...

  2. 在配有英特尔® Iris™ 显卡的系统上通过优化对 Just Cause 3 进行增强

    高端 PC 继续通过高性能显卡驱动桌面游戏. 一流的"梦想机器"基于第六代智能 英特尔® 酷睿™ 处理器i7-6700K等 CPU,通常与高端独立显卡配合使用以运行要求最严苛的游戏 ...

  3. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  4. .NET Portability Analyzer 已开源

    在一年前介绍过<介绍.NET 开发必备工具 .NET Portability Analyzer>,微软已经把代码开源到Github:https://github.com/Microsoft ...

  5. .NET基础拾遗(6)ADO.NET与数据库开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  6. 透过浏览器看HTTP缓存

    作为前端开发人员,对于我们的站点或应用的缓存机制我们能做的似乎不多,但这些却是与我们关注的性能息息相关的部分,站点没有做任何缓存机制,我们的页面可能会因为资源的下载和渲染变得很慢,但大家都知道去找前端 ...

  7. Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include

    问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...

  8. .NET 基础一步步一幕幕[out、ref、params]

    out.ref.params out: 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组. 但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候, 我们可以考虑使用 ...

  9. UEditor编辑器使用示例

    1. UEditor下载 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 下载链接:http ...

  10. Bootstrap3系列:按钮组

    1. 基本实例 1.1 示例代码 <div class="btn-group"> <button type="button" class=&q ...