(这是一个多部分问题,我会尽力概括情境。)
我们正在构建一个响应式Web应用程序(新闻阅读器),允许用户在选项卡内容之间滑动,并在每个选项卡内容内部垂直滚动。
解决该问题的常见方法是使用包装器 div
来填充浏览器视口,将 overflow
设置为 hidden
或 auto
,然后在其中水平和/或垂直滚动。
这种方法很不错,但有一个主要缺点:由于文档的高度与浏览器视口完全相同,手机浏览器将不会隐藏地址栏/导航菜单。
有众多黑科技和视口属性可以使我们获得更多屏幕空间,但没有一个像 minimal-ui
(iOS 7.1引入)那样有效。
问题1.在Mobile Safari上是否仍然可以隐藏地址栏?
据我们所知,iOS 7 不再支持“window.scrollTo”黑客技巧,这意味着我们必须接受较小的屏幕空间,除非我们采用垂直布局或使用“mobile-web-app-capable”。
问题2.是否仍然可以拥有类似的软全屏体验?
我真正想说的是没有使用“mobile-web-app-capable”元标记的软全屏。
我们的Web应用程序建立在可访问性基础上,任何页面都可以使用本机浏览器菜单进行书签或共享。通过添加
mobile-web-app-capable
,我们防止用户调用此类菜单(当它保存到主屏幕时),这会使用户感到困惑和敌对。
minimal-ui
曾经是一个折中方案, 默认情况下隐藏菜单,但通过轻触使其可访问--尽管苹果可能由于其他可访问性问题(例如用户不知道在哪里轻触以激活菜单)而将其删除。
Q3. 全屏体验是否值得麻烦?
似乎iOS不会很快推出全屏API,但即使有,我也看不出菜单如何保持可访问性(安卓上的Chrome也是如此)。在这种情况下,也许我们应该保持移动版Safari的原样,并考虑视口高度(对于iPhone 5+,它是460=568-108,其中108包括操作系统栏、地址栏和导航菜单;对于iPhone 4或更早版本,它是372)。
很想听听其他选择(除了构建本地应用程序)。