document.documentElement.clientWidth       不包含滚动条

window.innerWidth                                            +滚动条

window.outerWidth                                            +浏览器边框

window.width                                                     屏幕区域

IPhone 6 的 屏幕分辨率 为 750*1334

IPhone 6 的尺寸 为 4.7 英寸

IPhone 6 的 像素比 DPR 为 2                              window.devicePixelRatio;

IPhone 6 的 独立像素 为 375*667                        window.innerWidth;

IPhone 6 的布局(视口)像素为 980*1743              document.documentElement.clientWidth

在普通的 PC 端,视口的默认宽度 与 浏览器的窗口宽度 一致

如果直接将 PC 端页面 放到移动端,会是一个 压缩的效果

  • 移动端的浏览器厂商,都面临一个问题

如何将 数以万计 或者 数以亿计 的 PC 端网页 完整的呈现在移动端设备,而不会出现滚动条?

此时,移动端浏览器必须有一个容器,容器 规定 PC 端页面 如何在移动端浏览器呈现

  • 在 PC 端

    • 浏览器的视口 是小于屏幕的
  • 在移动端
    • 浏览器的视口 是远大于屏幕的独立像素的

移动端浏览器厂商要实现的目标:

在小屏幕的移动设备上,尽可能的缩小网站来让用户看到网站的全貌。

于是,移动端浏览器厂商,将 布局视口 默认设置地比 手机屏幕 大,如 IPhone6 的布局视口为 980px

  • 程序员两种方案:
  • 两套页面
  • 响应式布局

移动端的三个视口

  • layout viewport

布局视口,即容器。用来装 PC 端页面的

  • IPhone 6 的布局视口像素 980
  • 除了 黑莓 和 IE 是 1024,其他大多都是 980

默认的布局视口宽度 远大于 屏幕的宽度

  • 布局像素
  • 可以通过 document.documentElement.clientWidth 获取
  • 布局像素,是 css 像素
  • 在 PC 端,单独一个 width 为 20% 的元素 最终拿到的值由 初始包含块width(屏幕大小) 决定

PC 端中从 初始包含块 开始盒子,而在移动端,是从 布局视口 开始填盒子的

因此,一定程度上,可以把移动端的 布局视口 理解为 初始包含块

  • visual viewport

视觉视口 与 设备屏幕的区域 一样大

视觉视口的像素,是 css 像素,并且会随着用户的缩放而改变

视觉视口像素

可以通过 window.innerWidth 获取但是在 Android 2 ,Oprea mini,UC 8 中无法正常获取

  • viewport

据分析,布局视口 的默认宽度并非一个理想的宽度

  • 理想视口,即用户进入到页面时,不需要进行缩放

这也是为什么苹果和效仿苹果的浏览器厂商 会引进理想视口

只有专门为移动设备开发的网站,才有 理想视口 一说。

  • 不加 meta 理想视口标签

物理像素    750

独立像素    375

css 像素    980

像素比 DPR = 物理像素 / 独立像素 = 750 / 350 = 2

  • 优点:

    • 等比现象,同一元素,在不同设备(屏幕)上,呈现的效果是一样的。(???/980)
  • 缺点:
    • 页面元素小,文本小,用户体验差
  • 只有在页面中 加入 <meta name="viewport" content="width=device-width" /> 理想才会生效
  • 加上 meta 理想视口标签:        布局视口 = 视觉视口 = 理想视口

物理像素    750

独立像素 = css 像素 = 375

像素比 DPR = 物理像素 / 独立像素 = 物理像素 / css 像素 = 750 / 375 = 2

  • 优点:

    • 文本清晰呈现,用户体验较好
    • 像素体系连接起来了(DPR 为 2 时,1 个 css 像素 = 多少物理像素???)
      • 不缩放    像素比 DPR = 物理像素 / 独立像素 = 物理像素 / css 像素 = 750 / 375 = 2
      • 不缩放    1 个 css 像素 = 4 个物理像素
  • 缺点:
    • 同一个元素,在不同设备(屏幕)上,呈现出的效果不一致(不等比现象,???/375    ???/414)

      • ----解决:适配。
  • <meta name="viewport" content="布局视口的宽=独立像素的宽" />

<meta name="viewport" content="width=375" />

像这样直接指定 具体数值,ios 会呈现出不理想效果

在 PC 浏览器,最干净的视口就是约束 css 布局的视口,决定了用户能看到什么

移动设备上,视口分为两个:布局视口限定 css 布局,视觉视口决定用户看到什么

移动设备上,一旦加入 meta 标签,就有了理想视口,对于特定设备上特定浏览器的布局视口的一个理想尺寸

mobile_视口的更多相关文章

  1. CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口

    CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSh ...

  2. 移动端web开发——视口

    本篇主要是记录一下移动端视口的分类说明和其它的一些知识.在开始之前,先看一个典型的例子: <meta name="viewport" content="width= ...

  3. jmobile学习之路 ---- 视口

    当我们的浏览器在窗口最大化的时候,此时屏幕的宽度,就是我们桌面的分辨率.这个规则仅仅适用于PC! 我们试图在iPhone中输出屏幕宽度,你会发现屏幕宽度是980!居然和PC屏幕差不多大! 苹果主导的这 ...

  4. NGUI 指定视口大小

    由于只是给Uinty开发插件,对Unity没有系统的学习,对Unity的很多功能都不是非常了解,幸得其他Unity同事的耐心教导,才不至于想崩头.记录一下,避免重复犯错. NGUI可以建立指定视口大小 ...

  5. 移动web开发之视口viewport

    × 目录 [1]布局视口 [2]视觉视口 [3]理想视口[4]meta标签[5]总结 前面的话 在CSS标准文档中,视口viewport被称为初始包含块.这个初始包含块是所有CSS百分比宽度推算的根源 ...

  6. HTML5移动Web开发(九)——优化浏览器视口宽度设置

    每个移动设备都有自己默认的视口宽度,如果你不显示的设置它的值,在渲染页面的时候你可能会得不到你想要的效果.比如,如果不设置iPhone的视口宽度,它将会按照980像素的宽度渲染页面,如果你的页面设计不 ...

  7. 说说移动前端中 viewport (视口)

    转载网络资源的文章:来源不详~~ 移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dip ( device-independent pixel 设 ...

  8. 移动前端中viewport(视口) 转

    移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dpi ( device-independent pixel 设备逻辑像素 )和 CSS 像素之间 ...

  9. 响应式注意要添加“视口”约束标记---viewport

    视口:我们试图在iPhone中输出屏幕宽度,你会发现屏幕宽度是980,却和PC屏幕差不多大.原因是苹果主导的这些手机厂商,为了使用户获得完整web体验,很多设备都会欺骗浏览器返回一个数值较大的“视口” ...

随机推荐

  1. Jenkins 子业务日志拆分分析方法

    需求 Jenkins日志打印内容很长,或者并发编译导致,日志内容不容易查看. 对于具体业务失败, 开发者希望看到具体业务自身的日志内容. 解法 tee 命令能够保证, shell命令执行的内容,即往控 ...

  2. 一、Kubernetes系列之介绍篇

      •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什 ...

  3. Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜

    1.什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由    1.用户任务 app    2.管道 broker 用于存储 ...

  4. 激活函数——sigmoid函数(理解)

    0 - 定义 $Sigmoid$函数是一个在生物学中常见的S型函数,也称为$S$型生长曲线.在信息科学中,由于其单增以及反函数单增等性质,$Sigmoid$函数常被用作神经网络的阈值函数,将变量映射到 ...

  5. auto类型说明符

    auto让编译器通过出初始值来推算变量的类型,显然,auto定义的变量必须有初始值: //由val1和val2相加的结果可以推断出item的类型 auto item = val1 + val2;//i ...

  6. docker时间和本地时间不一致的问题

    前言: 在本地执行date 和登录docker后的date显示的时间不一致,差一天多,不是8个小时 参考:戳这儿 先重启,查看后发现差8个小时 用里面cp localtime 再重启还是差8个小时 试 ...

  7. 【原创】大数据基础之HDFS(2)HDFS副本数量检查及复制逻辑

    HDFS会周期性的检查是否有文件缺少副本,并触发副本复制逻辑使之达到配置的副本数, <property> <name>dfs.replication</name> ...

  8. 【原创】大叔经验分享(45)kibana添加index pattern卡住 返回403 Forbidden

    kibana添加index pattern卡住,通过浏览器查看请求返回状态为403 Forbidden,返回消息为: {"message":"blocked by: [F ...

  9. pta编程总结3

    7-1 抓老鼠啊~亏了还是赚了? (20 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块 ...

  10. 著名的3像素Bug(div+img,多出几像素)

    <div><img src="...."></div> 给img的css设置display: block;/*用来去除div下边莫名多出来的3p ...