现在做的项目要重新写viewport,就研究了一下。本来就对这一块迷迷糊糊的,看了几位大牛的文章就更迷糊了,好歹最后是弄得差不多了,赶紧记录下来。
先来看下viewport是什么意思,字面意思是视图窗口,就是显示页面的地方,如果不设置他的属性,一般咱们在移动设备上看到的网页都比设备本身的大,下面是viewport的属性:

width 可视区域的宽度,为一个正整数,或字符串”width-device”
initial-scale 设置页面的初始缩放值,为一个数字,可以带小数
minimum-scale 允许用户的最小缩放值,为一个数字,可以带小数
maximum-scale 允许用户的最大缩放值,为一个数字,可以带小数
height 可视区域的高度,这个属性对我们并不重要,很少使用
user-scalable 是否允许用户进行缩放,值为”no”或”yes”, no 代表不允许,yes代表允许

iPhone 和 Android 平台上,WebKit 内核的浏览器使用 980 像素宽的视见区或逻辑尺寸,相当于viewport的width=980px。当页面加载后,内容通常被完全缩放以便整个页面都可见,尽管内容会被缩放得非常小,甚至不可读。
iPhone3GS及以上设备的Safari和Android4.0以上的浏览器支持修改viewport的width来改变页面的缩放情况,你可以将width指定为页面设计的宽度,如此一来,你的页面正好充满viewport并全屏显示,而不会缩放。如当页面设计宽度为480px时,可以设置viewport的width=480px:

<meta name=”viewport” content=”width=480px, user-scalable=no” />

因为现在的项目是在320px宽的模板上做出来的,所以放到移动设备上的时候,比较简单的方法就是在320Px的基础上缩放。也就是现在viewport的width的值就是固定的320px。再根据后面scale的值来缩放整个网页,就会得到想要的效果。
按照这个思路走下去,只要获取移动设备屏幕的宽度再除以320就得到scale值了。但是这个想法,在实践的时候却遇到了问题。
获取屏幕宽度的方法是:

window.screen.width

在苹果6s上得到的是375,我们都知道的屏幕的正常宽度,但是在小米3上得到值是1080,这显然不是正常手机的实际屏幕宽度。经过几个安卓手机测试,这个值跟屏幕的实际宽度相差dpr(设备像素比 device pixel ratio)倍。也就是可以得到以下公式:

真实屏幕宽度=window.screen.width/dpr

得到真实屏幕的宽度之后,就可以再除以320得到scale的值了。

以上是针对高分辨率安卓手机的优化。苹果手机相对简单,只要把viewport的width值设置成320,就会自动缩放成合适的大小了。


下面是参考资源:

http://www.cnblogs.com/plums/archive/2013/01/10/WebApp-fixed-width-layout-of-multi-terminal-adapter-since.html#3077467

http://tgideas.qq.com/webplat/info/news_version3/804/7104/7106/m5723/201509/376281.shtml

http://www.cnblogs.com/2050/p/3877280.html

http://caibaojian.com/js-name.html#t10

http://f2e.souche.com/blog/yi-dong-duan-zi-gua-ying-fang-an/?utm_source=tuicool&utm_medium=referral#clue

http://www.html-js.com/article/Mobile-terminal-H5-mobile-terminal-HD-multi-screen-adaptation-scheme%203041

移动web开发viewport记录相关推荐

  1. Java Web 开发 从入门到入?

    Java Web 开发 学习记录一 Web 前端基础 标题 这是一个知识点 Java Web 开发 学习记录一 Web 前端基础 前言 一.HTML相关介绍 二.HTML 1.HTML文件的基本结构 ...

  2. 移动web现状、viewport视口、二倍图、移动web开发主流方案、布局技术选型(流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局、媒体查询、bootstrap)

    移动端web现状: 移动端常见浏览器:UC浏览器,QQ浏览器,Opera浏览器,百度手机浏览器,360安全浏览器,谷歌浏览器,搜狗手机浏览器,猎豹浏览器及杂牌浏览器.移动端常见的浏览器都是基于webk ...

  3. 移动Web开发基础-Viewport

    导语:移动Web开发自然要从Viewport说起,那什么是Viewport呢?字面意思为视图窗口,在移动设备上就是指用来显示页面的那部分区域. 用移动设备来访问没有做特殊处理的PC页面,移动设备是显示 ...

  4. go语言web开发系列之五:gin用zap+file-rotatelogs实现日志记录及按日期切分日志

    一,安装需要用到的库: 1,安装zap日志库: liuhongdi@ku:/data/liuhongdi/zaplog$ go get -u go.uber.org/zap 2,安装go-file-r ...

  5. WEB开发零基础到入门之HTML+CSS(学习记录)

    序言 之前一直想把自己的一个学习记录,以文章形式记录下来,方便于自己后期查找和温故.自己想了想准备建个人博客站来做记录,但是又想到了csdn的大家庭:所以就放弃了用个人站记录的想法,关于这里简单说明下 ...

  6. web开发方面阅读的经典书籍记录

    最近在项目中做web开发,翻阅了一下书籍(觉得本本都是经典) 锋利的jquery(我入门js的教程,验证书上每个例子并进行局部修改查看效果) jquery实战(中文版) javascript 基础教程 ...

  7. mobile web开发遇到的问题

    移动web开发之道(Android与Iphone) 1.javascript篇 (1)使用querySelector和querySelectorAll这两个方法获取文档对象中DOM节点的引用 由于这两 ...

  8. 网页开发工具有哪些?——开发者必备的15个Web开发工具

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  9. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

最新文章

  1. 小清新简约风个人简历PPT模板
  2. 【深度学习入门到精通系列】Gamma变换(校正)
  3. java工程师之旅-一个月工作心得
  4. 计算机不让爱奇艺显示在桌面,怎么让爱奇艺图标不在我的电脑里显示
  5. CComPtr对象作为参数进行 1.值传递 2.引用传递 3.做为返回值的注意事项
  6. 固态硬盘—国内视频行业的暂时救星?
  7. powerbi发布本地_PowerBI中本地数据的注意事项
  8. 剑指Offer之把数组排成最小的数
  9. ArcGIS求局部空间自相关
  10. jszip 解压压缩包_JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
  11. jq/js获取屏幕宽度和高度
  12. H7710s-DDP协议(抄录)
  13. 中国哲学书电子化计划
  14. CPU、内存、硬盘、显卡、显示器之间的关系
  15. Easy Touch 5 简单使用
  16. a king读后感 love of the_电影读后感英文
  17. 赌徒破产理论(Gambler's Ruin)
  18. 编程实现根据公式π/4=1-(1/3)+(1/5)-(1/7)...计算π的值
  19. Axure的动态面板制作tab切换效果
  20. AOV网络——初了解

热门文章

  1. 是一个新的开始,还是冥冥之中已经在路上。
  2. FileMerge代码对比工具的简单使用
  3. java8 list map相关操作汇总(不断更新~~~)
  4. Nand Flash引脚(Pin)的说明
  5. GBU1510-ASEMI电源专用15A整流桥GBU1510
  6. group by使用
  7. yan-master项目启动报错No bean named 'springSessionRepositoryFilter' is defined
  8. Unity中日历面板
  9. Mean Shift Segmentation Assessment for Individual Forest Tree Delineation from Airborne Lidar Data
  10. 计算机科学与技术专业毕业答辨问题,计算机网络技术专业答辩问题及答案