meta标签中viewport
meta标签中viewport
meta标签中viewport一、什么是Viewport
通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。
移动设备默认的viewport是layout viewport
二、一些设备上浏览器的默认viewport的宽度
三、常见的meta标签Viewport的写法
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;" />
参数说明
width
控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
height
和 width 相对应,指定高度。
initial-scale
初始缩放比例,也即是当页面第一次 load 的时候缩放比例,为一个数字,可以带小数。
maximum-scale
允许用户缩放到的最大比例,为一个数字,可以带小数。
minimum-scale
允许用户缩放到的最小比例,为一个数字,可以带小数。
user-scalable
用户是否可以手动缩放。
四、关于viewport的一些问题
1、viewport并非只是ios上的独有属性,在android、winphone上同样也有viewport。它们要解决的问题是相同的,即无视设备的真实分辨率,直接通过dpi,在物理尺寸和浏览器之间重设分辨率,这个分辨率和设备的分辨率无关。
比如,你拿个3.5寸-320 * 480的iphone3 gs、3.5寸-640 * 960的iphone4或者9.7寸-1024*768的ipad2,虽然设备的分辨率不同,物理尺寸也不同,但你可以通过设置viewport让它们在浏览器里有相同的分辨率。比如说,你的网站是800px宽,你可以通过设置viewport的width=800,来让你的网站在这三个不同的设备上都刚好满屏显示你的网站。
2、如果不显示地设置viewport,那么width的默认为980。如果页面的所有元素宽度都小于980,此时width为980,如果页面最宽的位置超过980,那么width等于最大宽度。总之,默认能将整个页面从左到右显示出来。
如果设置了viewport,比如,只单纯地设置了user-scalable=no,例如<meta name="viewport" content="user-scalable=no" />,那么ios下width还是按980显示(即默认就会通过dpi缩放),但android和winphone下却不会再缩放了,浏览器分辨率和真实设置分辨率一致。
3、对于ios设备,设置width可以生效,但对于android,设置width并不会生效。ios设备,缩放的比率即dpi是通过你设置的width和设置真实分辨率自动计算的,而android下你设置width无效,你能设置的是一个特殊的字段target-densitydpi。
也就是说,有三个变量:浏览器width、设备真实width、dpi。 我们简单地用个公式来表达它们之间的关系吧(并非真实关系,简单说明用) 设备真实width * dpi = 浏览器width,这里的三个变量,设备真实width是个我们不能操作的已知值,另外两个变量我们可以设置一个来影响另一个,在ios中,我们能改的是浏览器width,dpi自动生成,而在android中,我们能改的是dpi,浏览器width自动生成。对于android,无论我们如何设置width,也不会对浏览器width产生影响。
4、这一条和上一条应该是直接相关的:ios设备在横竖屏时,会自动调整dpi,无论横屏还是竖屏,都能保证浏览器width等于viewport中设置的值,所以横竖屏的时候,页面里显示的内容的大小是会自动缩放产生变化的。而android手机在横竖屏的时候,不会改变dpi,在横竖屏的时候,网页不会产生缩放。也正因此,ios可以保证横竖屏页面都不会产生滚动条,满屏显示,而android却无法保证这一点,横着满屏则竖着无法满屏,反之亦然。
5、对于ios设备,如果width显示定义了,而页面最宽的位置超过width的话,width无效,仍按最宽的宽度来显示(不会有滚动条)。但此时会出现一个很奇怪的问题,当你将手机横竖屏切换几次之后,会发现你的页面自动放大了,出现了滚动条,但其实放大后的宽度其实和你设的width也并没有关系。为了防止这种情况出现,你需要将width的宽度设置得比页面最宽的地方更大,或者相同。
- html5支持video的视频格式(解决html5中的video标签ios系统中无法播放使用的问题)
- html5代码之翻页(HTML5实现直播间评论滚动效果的代码)
- html5发送文字特效(HTML5调用手机发短信和打电话功能)
- html5列表与布局(HTML5逐步分析实现拖放功能的方法)
- html5canvas功能介绍(Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 附转换公式)
- html5的优点是什么
- html5按钮点击跳转(HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题)
- html5怎么设置红色(详解HTML5如何使用可选样式表为网站或应用添加黑暗模式)
- vue加载html5动画(vue实现旋转木马动画)
- html5的canvas图形绘制技术(导出HTML5 Canvas图片并上传服务器功能)
- html5长按动画效果(HTML5实现移动端弹幕动画效果)
- html5添加背景(Html5实现首页动态视频背景的示例代码)
- html5浏览界面怎么设置(HTML5textarea高度自适应的两种方案)
- wordpress如何在文章中自定义html(wordpress添加Html5的表单验证required方法小结)
- 用html5做一个音乐的播放器(HTML5自定义mp3播放器源码)
- 制作共用的头部和底部html5界面(html5移动端价格输入键盘的实现)
- 哪里可以看熊猫(成都哪里可以看熊猫)
- oppo手机的三种录屏方法,你知道有哪些吗(oppo手机的三种录屏方法)
- 吉林神秘传染链跨省 传染源尚未找到,舒兰 封城(吉林神秘传染链跨省)
- 吉林舒兰 封城 聚集性疫情传播链已延至沈阳,有一个细节让人忧心(吉林舒兰封城)
- 1天密接者猛增77人,患者轨迹透露危险信号 吉林市全面封闭管理(1天密接者猛增77人)
- 吉林舒兰 封城 15人确诊 276人隔离,出现跨省传播(吉林舒兰封城)
热门推荐
- nginx如何配置不显示nginx名字(Nginx安装完成没有生成sbin目录的解决方法)
- SqlServer2016模糊匹配的三种方式及效率问题简析(SqlServer2016模糊匹配的三种方式及效率问题简析)
- c# Invoke和BeginInvoke 区别
- python数据类型基本知识入门(Python Pexpect库的简单使用方法)
- sql怎么对一列数据分组另一行求和(分组后分组合计以及总计SQL语句稍微整理了一下)
- laravel视图组件(Laravel5.4框架中视图共享数据的方法详解)
- css3图片悬停切换代码(CSS3 实现的图片悬停的切换按钮)
- vue全局配置文件env(vue项目多环境配置.env的实现)
- docker导出日志(excel导出在docker环境中总是失败的问题)
- php7.4编译安装(PHP7.3.10编译安装教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9