在Safari和Chrome中测试-相同的结果,所以我认为这是iOS的问题.
只有当模态中有输入并且我点击该输入时,才会发生这种情况。与此同时,该输入获得焦点,并且原生iOS键盘变为可见。
modal下面的页面在同一时刻会自动滚动到其高度的50%。这种行为是完全不想要的,我完全不知道如何阻止这种默认的iOS "功能"。
演示:
- UPDATE**:修复提交:limonte/sweetalert2/commit/4a2d36b
在Safari和Chrome中测试-相同的结果,所以我认为这是iOS的问题.
只有当模态中有输入并且我点击该输入时,才会发生这种情况。与此同时,该输入获得焦点,并且原生iOS键盘变为可见。
modal下面的页面在同一时刻会自动滚动到其高度的50%。这种行为是完全不想要的,我完全不知道如何阻止这种默认的iOS "功能"。
演示:
5条答案
按热度按时间2eafrhcq1#
我们在工作中也面临着类似的问题,我在你的(出色的)演示页面上偶然发现了这个问题。
正如您提到的,偏移量始终为页面高度的~50%,无论初始偏移量在哪里,都会发生这种情况。
过去,当我在早期的iOS版本中观察到类似的“跳跃”时(尽管跳跃没有那么剧烈),我通常会通过将
position: fixed
(或relative
)应用于body
(this allowsoverflow: hidden
to properly work)来解决这个问题。然而,如果用户向下滚动,这会导致用户跳回到页面的顶部。
因此,如果您愿意用一些
JavaScript
来解决这个问题,下面是我提供的一个修补程序/hack:CSS是什么样子的:
下面是演示页面的一个分支,以说明:https://jpattishall.github.io/sweetalert2/ios-bug.html
对于那些正在寻找更通用的修复方法的人,您可以在打开/关闭模态时执行以下操作:
编辑:有一点需要注意的是,我们并没有盲目地将修复应用到所有设备/平台,只是iOS Safari。我注意到你的另一个问题,你不是一个球迷的溢出:隐藏是由于滚动条出现/消失时页面的移动(我完全同意)。我建议只将JS应用于iOS设备。
rks48beu2#
在iOS上,我遇到了由setTimeout和setInterval引起的滚动事件的问题(定位模态导致滚动?)。我找到了一个解决方案,使用以下代码。
9jyewag03#
我能想到的一件事是可能将Fast Click库添加到您的代码中。一些iOS和Android超时问题(如
300ms
延迟)由Fast Click处理。值得一试g9icjywg4#
还有一点需要检查的是,输入字段的字体大小超过了会触发缩放输入的最小值。我在这里是从内存工作的,但我遇到了类似的问题。将输入字体大小设置为16px(同样是从内存)或更大可以防止iOS Safari试图缩放输入字段,从而扰乱页面滚动。
2cmtqfgy5#
已解决!!!!!请将这些代码添加到脚本中
https://gist.github.com/kiding/72721a0553fa93198ae2bb6eefaa3299