移动端开发(一. Viewport(视窗))
手机与浏览器
移动端开发主要针对手机,ipad等移动设备,随着地铁里的低头族越来越多,移动端开发在前端的开发任务中站的比重也越来越大。各种品牌及尺寸的手机也不尽相同。尺寸不同就算了分辨率,视网膜屏 自动的各种内核的浏览器,想想头都大了。
先说下浏览器。在中国有多少种浏览器?
ie、百度、360、搜狗、火狐、欧朋、Chrome、谷歌、行者无疆、财猫省钱、遨游、Wise光速、UC、智慧、QQ、海豚。。。(大概有70-80多种)
五花八门,还好不用担心这都是表象。虽然浏览器各不相同但从浏览器的内核来看基本分为四种:
浏览器内核:
1、Trident内核:IE最先开发或使用的,也称IE内核,360浏览器使用的也是IE内核。
使用IE内核的还包括:
- 世界窗(The World)
- 傲游浏览器(Maxthon)
- 腾讯TT(Tencent Traveler)
- 帆浏览器(Avant Browser)
- 360安全浏览器 (360SE)
- 搜狗浏览器(兼容模式)(Sougou Explorer)
- 瑞影浏览器(Rayying
- 等等
2、Webkit内核:谷歌chrome浏览器最先开发或使用,也叫谷歌内核,枫树浏览器、太阳花使用的也是谷歌内核。
3、Gecko内核: Netscape6开始采用的内核,后来的Mozilla FireFox (火狐浏览器) 也采用了该内核,K-Meleon浏览器也是使用这种内核。
4、Presto内核:目前只有Opera浏览器采用该内核。
聊完浏览器再来看下目前主流手机的屏幕分辨率及其屏幕尺寸:
分辨率:
Android:主流机型主要为 480x800, 480x854, 540x960, 720x1280, 800x1280 这五种。(非主流机型还包括:240x320, 320x480, 640x960 这三种,其中两种都与 iPhone 一致。)
iOS: 主流机型主要为 320x480, 640x960, 640x1136, 1024x768, 2048x1536, 这五种。WP:主流机型主要为 480x800,720x1280, 768x1280 这三种其
屏幕尺寸:
android:一般在4寸-4.8寸之间,也有小到 3.2寸的,也有5寸,7寸,10寸的。
iOS:3.5寸,9.8寸,4.0 寸,7.8 寸。
在流量最大的100种设备中,目前全球最流行的屏幕分辨率为1136*640,排在第二~五位的依次是1920*1080,960*640,1280*720,及800*480。
了解了手机与浏览器就能够有的放矢的去开发一款受欢迎的移动端应用了。但这么多设备如何下手?
1.Viewport(视窗)
什么是 Viewport?
viewport 是用户网页的可视区域。
viewport 翻译为中文可以叫做”视区"
手机浏览器是把页面放在一个虚拟的”窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。
简单点来讲:移动设备上的viewport就是屏幕上能用来显示我们的网页的那一块区域。
viewport不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。
一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。
很显然viewport的宽度并不等于设备屏幕的宽度,滚动条和缩放页面也不是我们想要的效果。那么怎么办呢?改轮到meta标签收拾残局了。
开发移动端页面时,我们最常见的一个写法就是在head标签中加入:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0”>
它的作用就是让设备的viewport的width等于设备的width;同时禁止了设备的手动缩放功能。
meta viewport 标签首先是由苹果公司在其safari浏览器中引入的,目的就是解决移动设备的viewport问题。后来安卓以及各大浏览器厂商也都纷纷效仿,引入对meta viewport的支持。
在meta viewport 中有6个属性,如下:
- width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
- height:和 width 相对应,指定高度。
- initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
- maximum-scale:允许用户缩放到的最大比例。
- minimum-scale:允许用户缩放到的最小比例。
- user-scalable:用户是否可以手动缩放。
可以理解 “width=device-width”的作用就是把viewport的宽度变成了设备的宽度,无论竖屏还是横屏都一样。
回头看下为什么我们在手机上打开一个正常的pc端网站,在没有手动缩放的情况下,页面会自动缩小到适合手机的屏幕的尺寸?
因为在没有指定缩放值的情况下,移动设备会自动计算initial-scale的值保证 layout viewport 也就是页面宽度自动适配浏览器的可视宽度。。
总结:
- 移动设备的viewport宽度和设备的屏幕宽度不相等,一般来说 viewport的宽度大于device-width。
2. 在没有指定缩放值的情况下,移动设备会自动计算initial-scale的值保证 layout viewport 也就是页面宽度自动适配浏览器的可视宽度
3. http://viewportsizes.com 里面收集了众多设备的理想宽度。
移动端开发(一. Viewport(视窗))的更多相关文章
- 移动端开发viewport深入理解(转)
一.viewport的概念 移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,就是浏览器上用来显示网页的那部分区域,但viewport不局限于浏览器可视区域 的大小,它 ...
- (转)移动端开发总结(一)视口viewport总结
转载链接:移动端开发中,关于适配问题的一点总结(一) 视口 布局视口layout viewport 视觉视口visual viewport 理想视口 缩放 一个重大区别 最小缩放 和最大缩放 分辨率 ...
- 移动端开发-viewport与媒体查询
首先要知道,在移动开发中,手机的浏览器会默认网页是为宽屏而设计的,它会缩小整个页面来适应屏幕. 1. 不使用viewport出现的问题 提到响应式设计,大家首先想到的可能是 Bootstrap , @ ...
- 移动端开发,几个你可能不知道的CSS单位属性。
1. rem "em" 单位是我们开发中比较常用到的,它表示以当前元素的父元素的单位大小为基准来设置当前元素的大小:“rem” 中的 “r” 代表 “root”,它表示以根(即“h ...
- 原生js开发,无依赖、轻量级的现代浏览器图片懒加载插件,适合在移动端开发使用
优势 1.原生js开发,不依赖任何框架或库 2.支持将各种宽高不一致的图片,自动剪切成默认图片的宽高 比如说你的默认图片是一张正方形的图片,则各种宽度高度不一样的图片,自动剪切成正方形. 完美解决移动 ...
- 29.html5 移动端开发总结
手机与浏览器 浏览器: 移动端开发主要针对手机,ipad等移动设备,随着地铁里的低头族越来越多,移动端开发在前端的开发任务中站的比重也越来越大.各种品牌及尺寸的手机也不尽相同.尺寸不同就算了分辨率,视 ...
- html5 移动端开发
移动端开发总结 目录 1.手机与浏览器 2.Viewport(视窗) 3. 媒体查询 4.px,em,rem,pt 5.设备像素比devicePixelRatio 6.移动web中的图标及字体 ...
- 移动端开发用touch事件还是click事件
前端开发现在包含了跨浏览器,跨平台(不同操作系统)和跨设备(不同尺寸的设备)开发. 在移动开发的过程中,到底选取touch事件还是click事件?对了,请不要鄙视click,click在移动端开发用着 ...
- web移动端开发技巧与注意事项汇总
一.meta的使用 1.<meta name="viewport" content="width=device-width,initial-scale=1.0, m ...
随机推荐
- delphi显示hello world 和退出程序
Label1.Caption:='hello world!' Form1.close; application.Terminate; //终止程序 Application.Run; //程序运行 te ...
- 编译uboot提示libasm-offsets.c10 error bad value (armv5)解决方法
编译uboot-2016.09提示如下错误: lib/asm-offsets.c:1:0: error: bad value (armv5) for -march= switch 解决方法: 1.在命 ...
- Xcode7中 添加 .dylib
转一个 Xcode 7 缺少 *.dylib库的解决方法 Xcode7中 Link Binary With Libraries 没有 .dylib库,只能找到对应的 .tbd,但不能代替使用,通过查找 ...
- Bomb(hdu 3555)
题意:给定一个闭区间,求区间内有多少数中含"49" /* dp[i][j]表示i位数以j为最高位位中的所有不符合数的个数. 然后把数字拆分,乱搞即可. */ #include< ...
- TSP问题(旅行商问题)[分支限界法]
问题: 旅行商从 a 开始周游下图所有的城市一次,然后回到 a,城市之间的旅行代价在图中标明. 请选择一个最优的行走顺序使得周游所有城市的代价最小. 思路: 随便怎么周游,对于一个城市来说,一定有一条 ...
- Linux 线程调度与优先级设置
转载:http://blog.csdn.net/a_ran/article/details/43759729 线程调度间的上下文切换 什么是上下文切换? 如果主线程是唯一的线程,那么他基本上不会被调度 ...
- IDEA Show Line Number
刚开始用IDEA,经常发现右侧没有显示行号,然后去右键选一下,就显现了 一直没有留意这个现象,刚用vim想删几行数据代码,突然发现没有行号了 明明记得刚刚才右键显示了的 好吧,有行号用着比较顺心了.. ...
- 关于金额,重量等浮点数的数据库字段设计(用Int,Long代替浮点数计算)
金额.重量.成绩等数据库字段推荐使用int或bigint类型. 通常我们数据库设计中金额,重量等涉及到小数位的字段会用float或decimal,mysql还可以用double,但往往每笔金额的计算我 ...
- 兼容ie6及以上和firefox等标准浏览器的表格行滑过时背景色切换的效果
一.js代码——"tablehover.js" /** *②.表格单元行滑过时高亮样式动效组件封装 *oop形式封装交互动效类 *组件说明这个组件是为 ...
- 一个参数引起的mysql从库宕机血案
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1859252 一个参数 ...