Meta viewport 学习整理
The meta viewport tag contains instructions to the browser in the matter of viewports and zooming. In particular, it allows web developers to set the width of the layout viewport relative to which CSS declarations such as width: 20%are calculated.
viewport 标签告诉浏览器 viewports 的设置和缩放,并且 web 开发者可以通过这个标签设置和 css 相关的 layout viewport。
标签语法如下:
<meta name="viewport" content="name=value,name=value">
指令
Every name/value pair is a directive. (The word is my own invention.) There are six of them in total:
每一个键值对都是一个指令,一共有6个键值对
- width: 设置 layout viewport 的宽度
- initial-scale : 设置页面初始化是的缩放比,并且可以设置 layout viewport 的宽度
- minimum-scale :设置用户可以缩小页面的最小值,
- maximum-scale :设置用户可以放大页面的最大值
- height :设置 layout viewport 的高度,但是并不是哪都可以用
- user-scalable : 用户是否可以缩放页面
device-width
width 里有一个特殊的值:device-width,他可以把 layout viewport 的 width 设置为 idea viewport width。
理论上有一个和 device-width 相似的值 device-height,但是它并没有什么用
三种 viewport
之前作者有提到过在移动端浏览器里有2种 viewport,visual viewport 和 layout viewport,下面我假设你知道这2中 viewport。
The ideal viewport
原来还有一种 viewport,我们叫他 ideal viewport,它给出了设备上网页的理想大小,因此,理想视口的尺寸每个器件不同。
在一些老旧并没有retina 屏幕的设备上, ideal viewport 和物理像素的值是一样的,在最新的高物理分辨率的设备上,还继续保留着以前的 idea viewport 的定义,因为它的定义真的很合适。
直到并包括4S,iPhone的理想视口是320x480,无论是否是一个retine屏幕。 这是因为320x480是这些iPhone上的网页的理想尺寸。
关于 idea viewport 有2个重要的东西需要提到
- layout viewport 可以设置为 idea viewport 值。 width = device-width和initial-scale = 1指令这样做。
- 所有的缩放指令都是相对于 idea viewport,而不是 layout viewport 的宽度。 所以maximum-scale = 3表示最大缩放是理想视口的300%。
找到 ideal viewport 的大小
initial-scale
设置 initial-scale 做了2件事
- 它将页面的初始缩放系数设置为相对于 ideal viewport 计算的定义值。 因此它生成 visual viewport 宽度。
- 它将 layout viewport 置为刚刚计算的 visual viewport 宽度。
我们举一个例子:我在竖屏模式下的 iPhone 4s 设置 initial-scale=2,然后其他指令都不设置,不出意外,visual viewport 的宽度是 160px(320px / 2)
但是,它也将 layout viewport 的宽度设置为160px。 所以我们现在有一个160px宽的最小缩放页面。 (visual viewport 不能大于 layout viewport,因此不能缩小)。
已知bug
Android WebKit allows initial-scale to set the layout viewport width only if the value is 1 AND there is no width directive. So only initial-scale=1 without any other directives works.
IE 下 initial-scale 是无效的
Conflicting width directives
一旦 initial-scale 可以设置 layout viewport 宽度,那么你可以创造一些冲突的指令
<meta name="viewport" content="initial-scale=1,width=400">
这种情况下会怎么样?我们继续用 iPhone 4s 来打比方,
initial-scale=1告诉浏览器设置 layout viewport 的宽度在竖屏下为 320px,在横屏下为 480pxwidth=400告诉浏览器设置 layout viewport 为 400px,无论在横屏还是竖屏下。
浏览器处理这种情况是取最大值,这种情况下竖屏的 layout viewport 为 400px,横屏下 layout viewport 为480px
已知bug
Android WebKit不遵循这些规则。 如果宽度等于设备宽度或小于320,Android WebKit总是将 ideal viewport 宽度应用于 layout viewport。 在320以上它总是遵守width指令。
Meta viewport 学习整理的更多相关文章
- meta的学习记录
meta的学习记录 最近再学响应式的布局,就先来总结一下我们的viewport. 什么是viewport呢? 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(v ...
- Spring IOC设计原理解析:本文乃学习整理参考而来
Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. I ...
- JavaScript学习整理(转载)
JavaScript的学习整理(一) 目录: 1.换皮肤功能2.显示/隐藏(点击切换)3.显示/隐藏(onmouseover/onmouseout)4.选项卡5.全选/不选/反选(checkbox)6 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- TweenMax学习整理--特有属性
TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
- HTML meta viewport属性详细说明
viewport并非只是ios上的独有属性,在android.winphone上同样也有viewport,下面为大家详细介绍下HTML meta viewport 什么是Viewport 手机浏览器是 ...
- !!对python列表学习整理列表及数组详细介绍
1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...
- Java设计模式(学习整理)---命令模式
设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...
随机推荐
- android IntentService生命周期问题
假设须要在onHandleIntent之前运行一些操作.比方须要停止当前正在运行的任务.可在onStart做这个操作. 须要注意的是必须在onStart函数的最后(运行完我的操作后)调用super.o ...
- 如何在cmd中启动redis
首先要指定redis安装的目录,然后输入: redis-server.exe redis.windows.conf 如果成功,则会出现redis的标志,失败的话 请转帖到: http://www.cn ...
- 我的ngnix 配置内容
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- Linux kernel manpages
https://www.linuxquestions.org/questions/linux-newbie-8/man-pages-for-kernel-functions-758389/ 在Linu ...
- 把对象写入Postgresql中
工作中,遇到把大对象写入Postgresql数据库中 package com.geni_sage.gdme.cws.dic; import java.io.BufferedInputStream; i ...
- 32.10 使用模板更改控件的UI
32.10 使用模板更改控件的UI 样式是改变WPF控件基本外形的非常好(且非常简单)的方式,它通过为窗口部件的特性设置建立一组默认的值,从而改变WPF控件的基本外形.但是,即使样式允许我们改变各种 ...
- YII框架学习(一)
1.安装: windows:将php命令所在的文件夹路径加入到环境变量中,通过cmd命令:进入yii框架中的framework目录,执行: php yiic webapp ../cms linux:类 ...
- 初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/30314359 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)
[SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...
- memcached系列
memcached系列:http://blog.csdn.net/xingxing513234072/article/category/2462865