作为一个程序员的博客,必然会引用很多的代码块,为了尽可能让代码块不至于太乱,于是就考虑将页面的最小宽度设置为768px。在桌面版本并不会有太大的问题,但在移动设备(Android手机)上用Chrome浏览时,页面总是超出屏幕很多,使得你每一次打开页面都得进行缩放的操作。于是考虑用viewport来解决:设置initial-scale来解决。
- 关于viewport:
在html->head->meta中定义,可以设置content的width和initial-scale, maximum-scale, minimum-scale等等。
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
...
</head>
Nexus 4上viewport中的”device-width”到底有多大呢,可以用window.innerWidth来获取:
<body>
<script type="text/javascript">
document.write("device-width=" + window.innerWidth);
</script>
</body
- 用java script重新设置viewport
<script type="text/javascript">
function br_update_meta_viewport() {
var brWebMinWidth = 783; // The minimum width of the page
var brWinWidth = 0;
if (screen.availWidth) {
brWinWidth = screen.availWidth;
}
if (brWinWidth == 0 || brWinWidth > brWebMinWidth) {
return;
}
var brScale = brWinWidth / brWebMinWidth;
var metaContent = "width=" + brWinWidth + ", initial-scale=" + brScale;
var metaElements = document.getElementsByTagName('meta');
for (var i = 0; i < metaElements.length; i++) {
var meta = metaElements[i];
if (meta.getAttribute('name') == "viewport") {
if (meta.getAttribute('content') == metaContent) {
break;
}
meta.setAttribute('content', metaContent);
break;
}
}
}
window.addEventListener('resize', br_update_meta_viewport);
br_update_meta_viewport();
</script>
NOTE:
使用这个java script还是不能解决这个问题,明天再看看怎么改进。
原来,我所需要的效果只需要将html->head->meta中的定义删除,同时指定html->body的min-width为768px就行了。先暂时这样了。
参考文档:
https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag