HTML网站头配置

<link rel="icon" href="${basePath}favicon.png" type="image/x-icon" />
<link rel="shortcut icon" href="${basePath}favicon.png" type="image/x-icon" />

网站图标最好放在根目录
图标格式最好为ico

关键词

<meta name="keywords " content="a,b"/>
<meta name="description " content="aaa"/>

编码

<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

默认的浏览器引擎

若页面需默认用极速核,增加标签:

<meta name="renderer" content="webkit">

若页面需默认用ie兼容内核,增加标签:

<meta name="renderer" content="ie-comp">

若页面需默认用ie标准内核,增加标签:

<meta name="renderer" content="ie-stand">

我们只需在网站的head标签中添加上面的代码,即可以相对应的模式来渲染网站。
同时我们也可以同时指定多个内核名称,之间以符号”|”进行分隔,如下代码:

<meta name="renderer" content="webkit|ie-comp|ie-stand">

此时浏览器将会按照从左到右的先后顺序选择其具备的渲染内核来处理当前网页。
提示:目前只有360旗下全系列双核浏览器识别该meta标签。其他浏览器厂商可能会在以后版本的浏览器中添加对该meta标签的支持。

移动端适配

1
<meta name="viewport" content="width=device-width,initial-scale=1">

meta viewport 有6个属性(暂且把content中的那些东西称为一个个属性和值),如下:

  • width:设置layout viewport 的宽度,为一个正整数,或字符串”width-device”;
  • initial-scale:设置页面的初始缩放值,为一个数字,可以带小数;
  • minimum-scale:允许用户的最小缩放值,为一个数字,可以带小数;
  • maximum-scale:允许用户的最大缩放值,为一个数字,可以带小数;
  • height:设置layout viewport 的高度,这个属性对我们并不重要,很少使用;
  • user-scalable:是否允许用户进行缩放,值为”no”或”yes”, no 代表不允许,yes代表允许;

viewport的概念

通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。

iPhone iPad Android Chrome IE
980 980 980 980 1024

css中的1px并不等于设备的1px

​ 在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。在为桌面浏览器设计的网页中,我们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为320x480,在iphone3上,一个css像素确实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4开始,苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。

​ 还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。关于这点,在文章后面的部分还会讲到。

​ 在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素。css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素。但是要注意的是,devicePixelRatio在不同的浏览器中还存在些许的兼容性问题,所以我们现在还并不能完全信赖这个东西。