gpt4 book ai didi

Android 在使用固定宽度视口(viewport)元标记时忽略最大比例

转载 作者:太空狗 更新时间:2023-10-29 14:08:55 24 4
gpt4 key购买 nike

我有一个固定宽度的网页(640 像素宽)。我希望此页面缩小到移动设备的宽度。但是,如果设备的原始宽度大于 640 像素,我不希望它被拉伸(stretch)。看起来很简单:

<meta name="viewport" content="width=640, maximum-scale=1.0" />

这在 iPad/iPhone 中按预期工作。但是,在 Android 平板电脑上(例如在横向模式下),内容会按比例放大以适合显示屏。换句话说,Android 只是忽略了 maximum-scale=1 。您可以查看包含问题 here 的示例页面。为了完整起见,这里是来源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test Viewport</title>
<meta name="viewport" content="width=640, maximum-scale=1.0" />
<style>
div.bar {
position: absolute;
width: 636px;
height: 50px;
background-color: yellow;
border: 2px solid black;
left: 50%;
margin-left: -320px;
}
</style>
</head>
<body>
<div class="bar">
</div>
</body>
</html>

我一直在对视口(viewport)元标记进行大量研究和试验。我已经阅读了关于该主题的几乎所有内容,但没有看到提到这个看似基本的问题。

两个注意事项:

  • 这不是目标密度 dpi 问题

  • 在这种情况下将视口(viewport)宽度设置为设备宽度没有帮助,因为内容宽度是固定的并且大于(例如)手机的纵向设备宽度。如果我设置 width=device-width,页面将不会自动缩小以适应手机。

非常感谢。

最佳答案

经过多次用头撞 table 后,我找到了解决方案:

不幸的是,iOS 和 Android 的行为似乎完全不同(Android 显然没有按照规范忽略最大比例来执行)。解决方案是使用 JavaScript 根据分辨率进行专门化:

  • 如果屏幕宽度(见下面的注释)大于或等于固定页面宽度(在我的示例中为 640),则将视口(viewport)元标记的内容宽度设置为屏幕宽度

  • 否则将视口(viewport)元标记的内容宽度设置为固定页面宽度 (640)

急。可惜它需要 JavaScript 特化,但这就是生活。

请注意,如果设备是横向模式,iPad/iPhone 上的 Javascript screen.width 是不正确的(iPad 仍然报告纵向宽度而不是横向宽度,这与 Android 不同,它在这个案例!)。因此,您需要检查 iPad/iPhone 上的 window.orientation 并使用 screen.height 而不是 screen.width风景。

关于Android 在使用固定宽度视口(viewport)元标记时忽略最大比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com