将大页面缩放到小视口(缩小)

时间:2018-02-13 15:04:21

标签: width zoom scale viewport

我已经使用视口元标记 查看了 规模适合移动网络内容下的解决方案,但对所提供的示例没有任何好运。

我的问题是我有940像素宽的网页,需要根据设备视口宽度向上或向下缩放。我使用Phonegap将网页移植到Android应用程序中。

如果我的视口超过940px,就像我的1200px宽手机一样,那么下面的代码工作正常。视口会缩放恰当的数量,以便页面填充显示:

var mvp = document.getElementById('view');
var ratio= screen.width / 940
mvp.setAttribute('content', 'width=device-width, initial-scale='+ ratio +', target-densitydpi=device-dpi')

但是,如果我有一个宽度低于940的低分辨率平板电脑,页面太大而无法放入,需要四处移动才能看到屏幕外部分。基于上述线程中的讨论,我尝试了以下方法,但是视口设置的任何组合都不会强制它扩展到940,因此视口可以缩小"大小合适:

if (screen.width < 940) {mvp.setAttribute('content', 'initial-scale=1.0, maximum-scale=1, minimum-scale=1.0, user-scalable=yes, width=' + screen.width)};

if (screen.width < 940) {mvp.setAttribute('content', 'initial-scale=1.0, maximum-scale=1, minimum-scale=1.0, user-scalable=yes, width=' + 940)};

不行。实际上,手动将视口宽度设置为任何值都不会产生任何影响。

我做错了什么?我只想缩小视口宽度,以便正确显示940px页面的整个宽度。必须有一组视口设置才能为我完成此操作。我很感激帮助。

1 个答案:

答案 0 :(得分:0)

视口元标记的width值仅设置布局宽度或&#34;初始包含块&#34;宽度。即如果为<html>元素指定样式为width: 100%,则以像素为单位的宽度将是您在视口元标记中设置的宽度。

如果您的网页真的是940像素(因为,例如,您为html提供了明确的宽度:style="width: 940px"),那么视口标记中的width将不会产生任何影响(嗯,取决于哪个浏览器和其他怪癖 - 所以将它设置为940是一个好主意。)

所以这只是确保页面加载完全缩小的问题。浏览器不会让您缩小页面的内容宽度,因此您不需要特殊的大屏幕案例。 Chrome应该加载完全缩小的页面。 Firefox和Safari,据我所知,通常加载页面,以便您在视口标记中设置的width=属性适合设备屏幕(因此我在上面的警告)。所以你真的不需要对视口元标记做很多事情:

<meta name="viewport" content="width=940">

对于较大和较小的屏幕,应该可以做到这一点 - 假设您的内容实际上是940px宽。如果这不起作用,您的内容可能会对视口大小有一定的依赖性,或者您在某处有一个额外的宽元素 - 内容的链接或示例可能会有所帮助。