在移动前端第一弹:viewport详解中,咱们讲了viewport
,那是一个关于meta
的故事。此次咱们会就将meta
这个故事讲得更广阔、更有意思一些。html
写过HTML
的童鞋,应该都对这个不陌生,或用它来定义页面编码,或用它来定义搜索引擎抓取方式,或用它定义页面关键字,描述等等。前端
好的meta
使用,能更好地提升页面的可用性及被检索的概率。git
这里并不会列出全部的meta
使用方式,只挑选一些经常使用及实际意义比较大的讲讲,固然也包括一些厂商私有定制的。github
1 |
<meta charset="utf-8" /> |
该声明用来指定文档的编码,除了utf-8
,可选值还有:ISO-8859-一、BIG五、iso-8859-2, iso-2022-jp, iso-2022-kr, gb2312等web
固然,你可能还见过使用另一种方式来定义文档字符编码:chrome
1 |
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
相对于这种方式,更推荐你使用第1种,言外之意,就是推荐使用HTML5
。浏览器
1 |
<meta http-equiv="refresh" content="10" /> |
该声明用来指定页面自刷新或者跳转到其它页面,其中的时间单位是s
。缓存
1 |
<meta http-equiv="expires" content="0" /> |
该声明用来指定页面的过时时间,一旦网页过时,从服务器上从新请求,其中时间必须使用GMT
格式,或者直接是0
(即不缓存)服务器
1 |
<meta http-equiv="pragma" content="no-cache" /> |
上述语句均可以用来指定文档不被缓存。一些仍然在使用HTTP/1.0的可使用第1条,第2条由HTTP/1.1提供,经常使用值还有:public, no-cache, no-store等app
1 |
<meta name="author" content="joy, dooyoe@gmail.com" /> |
1 |
<meta name="keywords" content="CSS, HTML, JavaScript, 前端" /> |
多关键字之间以半角逗号分隔
1 |
<meta name="description" content="这是一份meta列表" /> |
文档描述内容最好是完整的一句话,以不超过50个字符为宜
x-ua-compatible
设置是从IE8
开始增长的(很明显,只适用于IE),对于过往的版本没法识别。
开发者能够经过设置x-ua-compatible
来指定渲染引擎的类型和版本,而且由于需求不一样能够有多种不一样的设置:
1 |
<meta http-equiv="x-ua-compatible" content="IE=7" /> |
当直接指定content
为IE的某个具体版本
,如上述代码第1条,客户端的IE将会使用IE7.0标准模式对页面进行渲染,并忽略Doctype定义。
当指定的IE版本在客户端IE中不存在时,IE将会尝试将该值转换为最为接近的版本。
例如指定一个错误的或者低于5.0的IE版本,如上述代码第2,3条,客户端的IE将会使用IE5.0对页面进行渲染,因为IE5.0并无标准模式,因此将会直接使用quirks mode
来渲染;
若是指定一个大于客户端IE的版本,如上述代码第4条,假定客户端IE的最高版本为9.0,那么IE会将该值转换为IE=9
,即便用IE9.0标准模式对页面进行渲染。
1 |
<meta http-equiv="x-ua-compatible" content="IE=EmulateIE7" /> |
当指定的content
值加了Emulate
前缀时,如上述代码,客户端IE将会根据Doctype定义来决定如何来对页面进行渲染。假设页面使用了标准的Doctype,那么此定义效果等同Case1
;假设页面并无使用标准的Doctype,那么将使用quirks mode
来渲染。
1 |
<meta http-equiv="x-ua-compatible" content="IE=Edge" /> |
当指定的content
值为IE=Edge
时,如上述代码,客户端的IE将会使用最高的标准模式对页面进行渲染。
1 |
<meta http-equiv="x-ua-compatible" content="IE=7, 10, 11" /> |
当指定的content
值有多个版本时,如上述代码,假定客户端IE版本为8.0或者9.0,则使用IE7.0标准模式对页面进行渲染;假定客户端IE版本为10.0或者11.0,则直接使用对应版本的标准模式对页面进行渲染。
1 |
<meta http-equiv="x-ua-compatible" content="IE=Edge, chrome=1" /> |
当指定的content
值为IE=Edge, chrome=1
时,如上述代码,假定客户端安装了Google Chrome Frame
,则在IE中使用chrome的渲染引擎来渲染页面,不然,将会使用客户端IE最高的标准模式对页面进行渲染。
1 |
<meta name="robots" content="index" /> |
通知搜索引擎文档是否须要被索引。可选值有:
若是声明冲突,某些引擎可能会作严格处理:
1 |
<meta name="robots" content="noindex" /> |
相似上述代码,在Google
引擎中,会执行noindex
这个更为严格的声明。
须要注意的是并非全部搜索引擎都支持robots meta
,比较保守的作法是配合robots.txt
使用。
1 |
<meta name="revisit-after" content="10 days" /> |
有时候你可能并不但愿站点一直被搜索引擎抓取,而是每间隔一段时间才来访问一次,这时,能够声明revisit-after meta
。
1 |
<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> |
该声明用于指定在移动设备上页面的布局视口如何设置。对于viewport meta
的详细设置,请参考:移动前端第一弹:viewport详解
iOS Safari
容许用户将一个网页添加到主屏幕而后像App
同样来操做它。咱们知道每一个App
下方都会有一个名字,iOS Safari
提供了一个私有的meta
来定义这个名字,代码以下:
1 |
<meta name="apple-mobile-web-app-title" content="Web App名称" /> |
Android Chrome31.0
,Android Browser5.0
也开始支持添加到主屏幕了,但并无提供相应的定义标题的方式,因此若是你想统一iOS
和Android
平台定义Web app
名称的方式,可使用title
标签来定义,代码以下:
1 |
<title>Web App名称</title> |
但若是你想要网页标题和App名字不同的话,那就只有iOS才行。
当咱们将一个网页添加到主屏幕时,会更但愿它能有像App
同样的表现,没有地址栏和状态栏全屏显示,代码以下:
1 |
<meta name="apple-mobile-web-app-capable" content="yes" /> |
该方案在 iOS
和 Android5.0+
上都通用。
当咱们将一个网页添加到主屏幕时,还能够对 系统显示手机信号、时间、电池的顶部状态栏
颜色进行设置,前提是开启了:
1 |
<meta name="apple-mobile-web-app-capable" content="yes" /> |
有了这个前提,你能够经过下面的方式来进行定义:
1 |
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
content只有3个固定值可选:default | black | black-translucent
default
,状态栏将为正常的,即白色,网页从状态栏如下开始显示;black
,状态栏将为黑色,网页从状态栏如下开始显示;black-translucent
,状态栏将为灰色半透明,网页将充满整个屏幕,状态栏会盖在网页之上;该设置只在 iOS
上有效。
在 iOS Safari
(其余浏览器和Android均不会)上会对那些看起来像是电话号码的数字处理为电话连接,好比:
可能还有其余类型的数字也会被识别,但在具体的业务场景中,有些时候这是没必要须的,因此你能够关闭电话自动识别,而后在须要拨号的地方,开启电话呼出和短信功能。
关闭电话号码识别:
1 |
<meta name="format-detection" content="telephone=no" /> |
开启拨打电话功能:
1 |
<a href="tel:123456">123456</a> |
开启发送短信功能:
1 |
<a href="sms:123456">123456</a> |
在 Android
(iOS不会)上,浏览器会自动识别看起来像邮箱地址的字符串,不论有你没有加上邮箱连接,当你在这个字符串上长按,会弹出发邮件的提示。
关闭邮箱地址识别:
1 |
<meta name="format-detection" content="email=no" /> |
开启邮件发送:
1 |
<a href="mailto:dooyoe@gmail.com">dooyoe@gmail.com</a> |
若是想同时关闭电话和邮箱识别,能够把它们写到一条 meta 内,代码以下:
1 |
<meta name="format-detection" content="telephone=no,email=no" /> |
部分meta
定义来自于trip