viewport 测试以及总结

摘要:
布局视口是一个类似于图层的东西,等于或大于视觉视口,放大或缩小不会改变。iPhone是移动设备理想的idealviewport。idealviewport的意义在于,为idealviewport设计的网站可以完美地呈现给用户,而无需在任何屏幕分辨率下手动缩放或水平滚动条。idealviewport实际上是逻辑分辨率。在实际开发中,我们需要设置布局视口,并使视觉视口与布局视口相等。

这里的总结的主要思想是ppk的文章(文末附有链接),加入了自己的总结,下面的测试用的是iphone5s,android是安卓5.5吋的手机,只是为了直观感受和方便解释拿了空出来的测试机给出的数据。详细具体的数据可以参考ppk的原文章:

layout viewport

浏览器默认 layout viewport,宽度可以通过 document.documentElement.clientWidth 来获取,iphone一般宽度是980,高度是1739。当然这 viewport 显然是一般是大于移动端屏幕大小的(现在我觉得不好说...),是移动端浏览器为了适应网站在大屏幕的显示效果设置的。

  • layout viewport 是一个图层一样的东西,等于或者大于 visual viewport,放大缩小不会改变。
  • clientWidth 的获取要在不设置 html 和 body 宽度的情况下,否则会变成设置的宽度。
  • 浏览器每次初始化页面会先计算出这个值,如果设置了 width 或者 initial-width,会根据这两个值去计算宽度。iphone 会从 width 或者 initial-scale中挑大的,

iphone表现如下:
viewport 测试以及总结第1张

android表现如下:
viewport 测试以及总结第2张

visual viewport

浏览器可视区域的大小 visual viewport,visual viewport的宽度可以通过 window.innerWidth 来获取,Android 2, Oprea mini 和 UC 8中无法正确获取。有个网站 http://viewportsizes.com/ 上面会标明,不过上面的数据已经很旧了,而且主要看的也是iphone的数据,文中指出iphone都是320,其实已经不然,i6 375,i6p 414,我之前有文章铺垫地总结一些,这是逻辑分辨率的宽度。
ppk 文章里有句话比较关键

The visual viewport is the part of the page that’s currently shown on-screen. The user may scroll to change the part of the page he sees, or zoom to change the size of the visual viewport.
visual viewport 是个图层窗口宽度一样的东西,是图层 layout viewport 的一部分,放大缩小会影响大小。

iphone的表现
viewport 测试以及总结第3张

android的表现
viewport 测试以及总结第4张

ideal viewport

移动设备的理想 ideal viewport,ideal viewport 的意义在于,无论在何种分辨率的屏幕下,那些针对 ideal viewport 而设计的网站,不需要用户手动缩放,也不需要出现横向滚动条,都可以完美的呈现给用户。

  • ideal viewport 其实就是逻辑分辨率

在实际开发中,我们要设置的是 layout viewport,同时要使 visual viewport 等于 layout viewport。那么通过上面的表格,容易知道安卓有三种情况:

  1. 只设置 width。
  2. 只设置 initial-scale 为1。
  3. 设置 width 为逻辑分辨率且设置 initial-scale 为1。
    第一种和第三种是可行的,第一种就是比如设置 width=750,然后所有尺寸按照750设计图来写,第三种就是淘宝 lib-flexible 的方案。

iphone 也有三种情况:

  1. 只设置 width。
  2. 只设置 initial-scale。
  3. 设置 width 和 initial-scale 相同。
    第三种不太靠谱,因为小数点的存在不会那么精确。第一种对应安卓的第一种,第二中对应淘宝 lib-flexible 的苹果方案。

总结的部分基本到这里了,其实要有一些概念来看可能才看得懂,下面附带主要参考的文章链接。个人觉得彻底理解还是要看ppk的文章,特别是第三篇。之前偷懒看翻译文章,后来发现翻译各种意犹未尽,所以还是推荐看原文爽快。现在的适配已经有vw的方案了,陆陆续续也看到了一些文章,专注移动端优化的童鞋可要赶紧了;)


本文来源:JuFoFu

本文地址:http://www.cnblogs.com/JuFoFu/p/7719916.html

水平有限,错误欢迎指正,转载请注明出处。



参考链接: 使用Flexible实现手淘H5页面的终端适配 http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html 移动前端开发之viewport的深入理解 http://www.cnblogs.com/2050/p/3877280.html ppk的文章系列 第一篇 https://www.quirksmode.org/mobile/viewports.html 第二篇 https://www.quirksmode.org/mobile/viewports2.html 第三篇 https://www.quirksmode.org/mobile/metaviewport/

免责声明:文章转载自《viewport 测试以及总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《关于长沙.NET技术社区未来发展规划》问卷调查结果公布树莓派AI视觉云台——8、WiringPi库函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

itouch/iphone/ipad充不上电的解决办法

  itouch/iphone/ipad长时间没有用,或是没电自己关机了,再充电开机变白苹果了,网上的方法用遍了都不管用,今天找到一个,很有效,特此分享给大家,具体操作如下:   首先把itouch/iphone/ipad连接至电脑,在出现白苹果的时候,按住电源键和Home键(主菜单键),5秒左右,就会黑屏。然后立刻按住电源键3秒,接下来不松开电源键的同时...

Ext Js简单面板及工具栏的创建使用

面板是比较基础的组件,很多的组件都是在Panel的基础上封装、创建的,可以把面板理解为一个容器,可以存放一些更多的组件在里面让页面更好看、功能更完善。1.对于Panel中的tbar\bbar\buttons的创建使用(其中和下文中的divId即为页面中一个div标签的id) functiontestPanel1(divId) { var testP...

iOS开发UI篇—iPad和iPhone开发的比较

一、iPad简介 1.什么是iPad   一款苹果公司于2010年发布的平板电脑   定位介于苹果的智能手机iPhone和笔记本电脑产品之间   跟iPhone一样,搭载的是iOS操作系统    2.iPad的市场情况   截止至2013年10月23日,iPad已经累计销售1.7亿台   在平板市场的占有率高达81% 二、关于iphone和iPad 说明:...

滴滴开源 Vue 组件库— cube-ui

cube-ui 是滴滴去年底开源的一款基于 Vue.js 2.0 的移动端组件库,主要核心目标是做到体验极致、灵活性强、易扩展以及提供良好的周边生态—后编译。 自 17 年 11 月开源至今已有 5 个月,在这个过程中 cube-ui 受到了不少的关注,同时从社区中也收到了很多很好的反馈和建议。我们也一直在迭代更新,从最初的 1.0 版本到最近发布的 1....

最全前端资源汇集

前些日子从@张鑫旭微博处得一份推荐 (Front-end-tutorial),号称 最全的资源教程 -前端涉及的所有知识体系;有粗略查看,果然“叹为观止”,至少比想象中涉猎丰富许多;果断有Fork了来:Front-end-tutorial;本就有收藏&分享欲,这种事儿早期也想做了,勘叹见识未广而深;幸遇这良心收集,得以借他人之酒杯,一浇我心之夙愿块...

苹果产品时间发布表统计(iPhone、iPad),以及32位和64位机的说明

之前因为某些原因,需要对apple家族的手机和pad产品做一个上市时间排序,以及分析分别是哪种CPU机型 总结如下: iPad家族: 1、iPad     - 2010.1.27发布 2、iPad 2    - 2011.3.3发布 3、iPad Mini   - 2012年底发布 4、iPad Air    - 2013.10.23发布 5、iPad M...