You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS主屏Web应用viewport-fit:cover无法占满全屏问题求助

解决iOS主屏Web应用全屏高度问题

我来帮你搞定这个iOS主屏Web应用的全屏适配问题!你已经找对了viewport-fit:cover的方向,但确实还缺几个关键配置,导致页面要么留白要么被裁剪。下面一步步给你调整:

1. 补充苹果专属Meta标签

要让Web应用在iOS主屏真正全屏运行,这两个标签是核心,必须加上:

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  • apple-mobile-web-app-capable="yes":告诉iOS这个Web应用可以脱离Safari,以独立全屏模式运行
  • apple-mobile-web-app-status-bar-style="black-translucent":让状态栏变为半透明,配合viewport-fit:cover就能让页面完全延伸到状态栏下方

2. 调整CSS适配安全区域

iOS底部的Home指示器(刘海屏的底部条)会占用空间,直接用100vhbottom:0会导致内容被遮挡或留白,得用CSS的env()变量适配安全区域:

修改后的完整代码示例

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <style>
        html, body {
            margin: 0;
            padding: 0;
            height: 100%; /* 也可以用 height: 100dvh; 适配iOS动态视口 */
            width: 100%;
        }
        .bottom-test {
            background-color: chocolate;
            font-size: 44pt;
            position: absolute;
            bottom: env(safe-area-inset-bottom); /* 自动适配底部安全区域高度 */
            left: 0;
            width: 100%;
            padding: 1rem 0; /* 可选:让内容不紧贴Home指示器 */
        }
    </style>
</head>
<body>
    <div class="bottom-test">TESTING</div>
</body>
</html>

关键细节说明

  • 为什么用height:100%而非100vh?iOS中100vh会包含浏览器状态栏高度,全屏模式下计算容易出错;100%基于父元素高度更稳定,iOS 15+也可以用100dvh(动态视口高度),它会自动排除系统UI占用空间。
  • env(safe-area-inset-bottom):这个变量会自动获取iOS底部Home指示器的高度,让内容刚好停在它上方,既不被遮挡也不会留白。
  • 一定要把htmlbody的默认marginpadding清零,避免浏览器默认样式导致的意外留白。

最后检查

  • 必须添加到主屏后测试,这些配置只有在主屏Web应用模式下才会生效,Safari浏览器内测试看不到完整效果。

内容的提问来源于stack exchange,提问作者Bruno Silva

火山引擎 最新活动