• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

html - iOS 版 Safari 上垂直 flexbox 中的最后一个元素在横向模式下被裁剪

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:29:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我的应用由一个 3 行的 flexbox 列组成:

<div class="app" style="display: -webkit-flex; -webkit-flex-direction: column; -webkit-justify-content: space-around;">
    <div class="question-header" style="-webkit-flex: 0 0 0;">...</div>
    <div class="question-interactive" style="-webkit-flex: 1 0 0;">...</div>
    <div class="navigation" style="-webkit-flex: 0 0 0;">...</div>
</div>

此设置适用于我们针对的所有桌面和移动浏览器(当然,当我们使用正确的前缀时),除了 safari for ios 的一个奇怪错误:当 safari for ios 处于横向模式时,导航栏离开页面

Portrait is OK
Landscape is Clipped

这不会在桌面浏览器或纵向模式下发生。这是 ios Safari 的已知错误吗?有人认出我的错误吗?导航 div 似乎没有根据其内容正确计算其高度...如果有助于缩小问题范围,我很乐意分享更多详细信息/代码



Best Answer-推荐答案


原来 safari for ios 有一个 底栏,它搞乱了 innerHeight 的计算!是不是很酷?!

解决方法是动态检测您在 ios 上的 safari(使用 UserAgent 过滤,lmao)并有条件地增加正文的高度以反射(reflect)页面的实际大小:

if ( UserAgent.says.it.is.iOS.Safari ) {
    $('body').css('height', window.innerHeight);
}

可以通过使用视口(viewport)的实际高度 (window.innerHeight) 并减去文档报告的 clientHeight (document.documentElement.clientHeight) 来找到您需要凹凸的高度差。

var delta = document.documentElement.clientHeight - window.innerHeight;

这是让我看到光明的 SO:Ipad: window.height() give bad value in Safari but not in Chrome

关于html - iOS 版 Safari 上垂直 flexbox 中的最后一个元素在横向模式下被裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445609/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap