标签:
一般,自适应移动端加这个语句即可
<meta name="viewport" content="width=device-width">
但是,不知道为什么加了这个语句还是没用,查了查可能跟下面这几个元素有关系,所以可以尝试这样子加:
<script>
var viewportContent = ‘‘;
if (window.devicePixelRatio = 1) {
viewportContent = ‘width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi‘;
} else if (window.devicePixelRatio == 2) {
viewportContent = ‘width=device-width, initial-scale=1.0, maximum-scale=1.0‘;
} else if (window.devicePixelRatio == .78) {
viewportContent = ‘width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi‘;
} else if (window.devicePixelRatio == 1.5) {
viewportContent = ‘width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi‘;
}
$(‘head‘).append(‘<meta name="viewport" content="‘ + viewportContent + ‘">‘);
</script>
1. iOS
类似的,无视网膜设备devicePixelRatio
值为1
,视网膜设备为2
. 因为实际的像素个数是双倍。不过,iphone似乎不愿意改变大家都熟知习惯的320像素宽度布局,没有把设备宽度一下子变成640像素,因此,dips宽度依然是320, 于是devicePixelRatio
就是640/320 = 2
.
iOS上的情况要相对简单些,除了1
就是2
. 在其他平台也基本上很简单,因为一般分辨率都比较挫,devicePixelRatio
都是1
.
2. Android
据我所知,谷歌的Nexus One是第一个使用dips的,比iphone还早。同时Galaxy Nexus以及Galaxy Note都是类运动视网膜显示器。近距离探究这三个设备应该会有所收获。
Nexus One分辨率是480*800, 为了最优的页面浏览,Android WebKit团队决定纵向手持时候的宽度依然是320像素,因此,devicePixelRatio
值为480/320 = 1.5
.
在同一手机上,Opera Mobile有相同的结论,dips为320宽,devicePixelRatio
也是1.5
.
顺便提一下,BlackBerry Torch 9810(OS7)物理像素同样480像素,BlackBerry WebKit团队决定坚持devicePixelRatio
为1
. 这可能是更不错的做法,在Torch显示器上480px宽度站点或多或少有些难以阅读。
Galaxy Nexus有像素的提升,为720×1200. Android团队决定提高dips层的宽度到360像素。从而使devicePixelRatio
为720/360 = 2
. Chrome团队决定跟进,就如腾讯QQ浏览器所做的那样。
然而,Opera,坚持自我,dips宽度为320px, 于是devicePixelRatio
为720/320 = 2.25
. 不过似乎还与zoom缩放层级有关。
Galaxy Note物理像素为800×1200. 这里所有浏览器都决定使用与Galaxy Nexus一样的比率:Android WebKit, Chrome, 以及QQ都是2
,也就意味着其dips宽度为400px. 然而,Opera依然一意孤行2.25
, 于是其dips宽度值有些怪怪的: 356px.
Android标准似乎不严格,于是自家人玩自家人的游戏,对于开发者而言,可能又会面临苦逼~~
3. 视网膜MacBook
新的MacBook采用视网膜显示屏,其devicePixelRatio
是(如果不出意外)2
. 视网膜MacBook的物理像素是2800×1800,而显示出分辨率为1400×900,如果把分辨率作为dips层,则devicePixelRatio
为2
应该是无误的。
需要指出的是,如果你把分辨率改成1920×1200,devicePixelRatio
依然是2
. 严格来讲,这是不准确的,应该是1.5
, 然而你也可以说MacBook的分辨率不同于dips层,这种情况下devicePixelRatio
在台式机/笔记本下的定义就不一样(哪一个?不知道。)。
在任何情况下,根据苹果的规范做法,devicePixelRatio
值只可能是1
或者2
. 如果你看到2
,你要提供视网膜优化显示图片,如果是1
,使用正常的图片——(这里内容其实属于视网膜站点的开发内容)。
结论
devicePixelRatio
在大多数浏览器是值得信赖的。screen.width
乘以devicePixelRatio
得到的是物理像素值。screen.width
除以devicePixelRatio
得到的是设备独立像素(dips)值。标签:
原文地址:http://www.cnblogs.com/Cchuying/p/5347259.html