夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Android/移动互联网/物联网/
什么是Viewport
夜鹰教程网 来源:www.yyjcw.com 日期:2017-8-27 21:58:34
用html5开发移动应用时往往会遇到手机的分辨率或屏幕大小不同的问题,如何使我们开发出来的应用或页面大小能适合各种手机呢?html5中的viewport能帮你做到。
 什么是Viewport视区概念

用html5开发移动应用时往往会遇到手机的分辨率或屏幕大小不同的问题,如何使我们开发出来的应用或页面大小能适合各种手机呢?html5中的viewport能帮你做到。

手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。移动版的 Safari 浏览器最新引进了 viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放,其他手机浏览器也基本支持。

此外,在开发地图应用的时候,也需要使用到Viewport,整张地图往往比屏幕宽很多。
Viewport基础语法介绍

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:
?
1
   
<meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″>

Viewport的常用参数如下

<meta name=”viewport”
content=”
height = [pixel_value | device-height] ,
width = [pixel_value | device-width ] ,
initial-scale = float_value ,
minimum-scale = float_value ,
maximum-scale = float_value ,
user-scalable = [yes | no] ,
target-densitydpi = [dpi_value | device-dpi | high-dpi | medium-dpi | low-dpi]
/>

width:

控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。

height:

和 width 相对应,指定高度。

initial-scale:

初始缩放比例,也即是当页面第一次 load 的时候缩放比例。这是一个浮点值,是页面大小的一个乘数。例如,如果你设置初始缩放为“1.0”,那么,web页面在展现的时候就会以target density分辨率的1:1来展现。如果你设置为“2.0”,那么这个页面就会放大为2倍。

maximum-scale:

允许用户缩放到的最大比例。这也是一个浮点值,用以指出页面大小与屏幕大小相比的最大乘数。例如,如果你将这个值设置为“2.0”,那么这个页面与target size相比,最多能放大2倍。

minimum-scale:

允许用户缩放到的最小比例。

user-scalable:

用户是否可以手动缩放,如果设置为yes则是允许用户对其进行改变,反之为no。默认值是yes。

所有的缩放值都必须在0.01–10的范围之内。

例:

1.设置屏幕宽度为设备宽度,禁止用户手动调整缩放;

2.设置屏幕密度为高频,中频,低频自动缩放,禁止用户手动调整缩放。

maximum-scale都将被忽略,因为根本不可能缩放。

target-densitydpi:

一个屏幕像素密度是由屏幕分辨率决定的,通常定义为每英寸点的数量(dpi)。Android支持三种屏幕像素密度:低像素密度,中像素密度,高像素密度。一个低像素密度的屏幕每英寸上的像素点更少,而一个高像素密度的屏幕每英寸上的像素点更多。Android Browser和WebView默认屏幕为中像素密度。

target-densitydpi 属性的取值范围

    device-dpi: 使用设备原本的 dpi 作为目标 dp。 不会发生默认缩放。
    high-dpi: 使用hdpi 作为目标 dpi。 中等像素密度和低像素密度设备相应缩小。
    medium-dpi: 使用mdpi作为目标 dpi。 高像素密度设备相应放大, 像素密度设备相应缩小。这是默认的target density。
    low-dpi: 使用mdpi作为目标 dpi。中等像素密度和高像素密度设备相应放大。
    <value>: 指定一个具体的dpi 值作为target dpi. 这个值的范围必须在70–400之间。

?
1
2
3
4
5
   
<meta name=”viewport” content=”target-densitydpi=device-dpi” />
<meta name=”viewport” content=”target-densitydpi=high-dpi” />
<meta name=”viewport” content=”target-densitydpi=medium-dpi” />
<meta name=”viewport” content=”target-densitydpi=low-dpi” />
<meta name=”viewport” content=”target-densitydpi=200″ />

为了防止Android Browser和WebView 根据不同屏幕的像素密度对你的页面进行缩放,你可以将viewport的target-densitydpi 设置为 device-dpi。当你这么做了,页面将不会缩放。相反,页面会根据当前屏幕的像素密度进行展示。在这种情形下,你还需要将viewport的width定义为与设备的width匹配,这样你的页面就可以和屏幕相适应。
Viewport 参考资料

    Mozilla 开发者博客 viewport 使用教程。
    Apple 开发者站 viewport 详细的描述。
    quirksmode.org viewport 在各个手机浏览器不同之处介绍。

Android web的Viewport开发入门

当今受欢迎的手机系统包括 Android,iPhone ,Symbian,BlackBerry 与Web OS。这些系统浏览器都是基于webkit核心,而webkit号称是一款全功能的移动浏览器,支持 HTML + CSS + JavaScript,但由于移动设备本身与PC的差异,导致我们开发的网页在移动设备上总是会存在一些不如人意的地方。

Viewport 翻译为中文可以叫做“视区”,大家都知道移动设备的屏幕一段都比PC小很多,webkit浏览器会将一个较大的“虚拟”窗口映射到移动设备的屏幕上,默认的虚拟窗口为980像素宽(目前大部分网站的标准宽度),然后按一定的比例(3:1或2:1)进行缩放。也就是说当我们加载一个普通网页的时候,webkit会先以980像素的浏览器标准加载网页,然后再缩小为490像素的宽度。注意这个缩小是一个全局缩小,也就是页面上的所有元素都会缩小。

那么我们能不能人为改变webkit的视区呢?当然能,在与之间加上如下视区代码:
?
1
   
<meta name="viewport" content="width=500" />

那么有没有更好的方法呢?比如说我们自动检测移动设备屏幕大小,然后让内容自适应。很简单,看来面的代码:
?
1
   
<meta name="viewport" content="width=device-width" />

device-width将自动检测移动设备的屏幕宽度。满意了吧?所有页面内容都和移动设备屏幕自适应。
复制链接 网友评论 收藏本文 关闭此页
上一条: 如何用Chrome模拟手机浏览器(iOS…  下一条: html5开发移动应用是最好的选择
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
在Struts 2中使用JSON Ajax支持
解决JSP中使用request乱码问题
JSP+JavaScript打造二级级联下拉菜…
Tomcat中文手册(1)
JSP及Servlet中遇到的多线程同步
详解:JSP和Servlet中的绝对路径和…
JSP Struts之HTML标签库详解
自定义JSP标签
JSP中的include指令
errorPage设置方法--JSP
JSP 国际化-格式化货币和日期
九个隐含对象使用总结JSP的
Tomcat中文手册(2)
tomcat6关于EL表达式的一个错误
jsp分页技术代码
  最近更新
iOS 关于退出键盘两种方法和避免遮…
安卓apk签名常见命令
把activity当成dialog使用
如何选择APP开发框架
Layout _width ,Layout_height和…
Android调用百度地图使用时出现in…
安卓刷机术语
android端实现断点续传功能
利用TCP/IP实现Android客户端与服…
Invalid project description ove…
推荐使用的meta标签
手机网站用Bootstrap还是jQuery M…
如何让手机访问PC网站自动跳转到手…
提升HTML5的性能体验系列之一 避免…
Android和IOS 字体该做多大合适?…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3